Я знаю, що досить часто чую, що C, як правило, має перевагу у порівнянні з C ++. Я не думав нічого іншого про це, поки не зрозумів, що MSVC навіть не підтримує найновіший стандарт C, але найновіший підтримує його C99 (наскільки я знаю).
Я планував написати бібліотеку з деяким кодом для візуалізації у OpenGL, щоб я міг її повторно використовувати. Я планував написати бібліотеку на мові C, оскільки будь-яке підвищення продуктивності вітається, коли мова йде про графіку.
Але чи справді це варто було б? Код, що використовує бібліотеку, ймовірно, буде записаний на C ++, і я волію кодувати в C ++ взагалі.
Однак, якщо це призведе навіть до невеликої різниці у продуктивності, я, швидше за все, пішов би з C.
Можна також відзначити, що ця бібліотека могла би працювати для Windows / OS X / Linux, і я, швидше за все, скомпілював би все своє (MSVC для Windows, Clang або GCC для OS X та GCC для Linux.) .або компілятори Intel для всього).
Я озирнувся і знайшов деякі орієнтири і подібне, але все, що я бачив, стосувалося GCC, а не MSVC та Clang. Крім того, в еталонах не згадуються стандарти використовуваних мов. У когось є думки з цього приводу?
Редагувати:Я просто хотів поділитися своєю точкою зору на це питання після ще кількох років досвіду. Я закінчив писати проект, до якого я задав це питання на C ++. Я розпочав ще один проект приблизно в той же час у C, як ми шукали, щоб досягти будь-якої невеликої кількості продуктивності, яку ми могли б і потребували, щоб проект міг бути пов’язаний у C. Пару місяців тому я дійшов до того, коли мені справді потрібні карти та просунуті. струнні маніпуляції. Я знав про здібності цього в стандартній бібліотеці C ++ і, врешті-решт, дійшов висновку, що ті структури в стандартній бібліотеці, швидше за все, перевершать і будуть більш стабільними, ніж карти та рядки, які я міг би реалізувати в C за розумну кількість часу. Вимогу бути сполученими в C легко було задоволено, записавши C-інтерфейс у код C ++, що було швидко виконано з непрозорими типами. Переписування бібліотеки в C ++, здавалося, проходило набагато швидше, ніж при написанні її на C, і було менш схильне до помилок, особливо витоку пам'яті. Я також зміг використати стандартну бібліотеку для нарізування бібліотеки, що було набагато простіше, ніж використання конкретних платформних реалізацій. Зрештою, я вважаю, що написання бібліотеки на C ++ призвело до великих переваг, можливо, з невеликою вартістю продуктивності. Я ще не орієнтував версію на C ++, але вважаю, що навіть можливо, що я отримав деяку ефективність, використовуючи стандартні структури даних бібліотеки, ніж ті, які я написав. Я вважаю, що написання бібліотеки на C ++ призвело до великих переваг, можливо, з невеликою вартістю продуктивності. Я ще не орієнтував версію на C ++, але вважаю, що навіть можливо, що я отримав деяку ефективність, використовуючи стандартні структури даних бібліотеки, ніж ті, які я написав. Я вважаю, що написання бібліотеки на C ++ призвело до великих переваг, можливо, з невеликою вартістю продуктивності. Я ще не орієнтував версію на C ++, але вважаю, що навіть можливо, що я отримав деяку ефективність, використовуючи стандартні структури даних бібліотеки, ніж ті, які я написав.