Правда ли, что все библиотеки c могут использоваться в c ++?

Довольно новый вопрос как есть.

10
задан wamp 26 August 2010 в 02:22
поделиться

4 ответа

Да. Нет никаких причин, по которым вы не можете использовать библиотеки C в C++. Все изменится, если вы захотите скомпилировать C в компилятор C++. C ABI полностью поддерживается C++, однако с точки зрения API все не так просто. Некоторые дополнения C, такие как restrict , не входят в стандарт C++, и с ними следует обращаться осторожно.

6
ответ дан 4 December 2019 в 02:24
поделиться

Если заголовки должным образом защищены с помощью extern "C" { ... }, тогда да.

2
ответ дан 4 December 2019 в 02:24
поделиться

Ответ: да. Взгляните на это:

http://www.cplusplus.com/reference/clibrary/

0
ответ дан 4 December 2019 в 02:24
поделиться

И да, и нет.

Под вопросом…

  • Составные литералы

  • Собственные типы данных комплексных чисел

  • Ключевое слово «restrict»

  • Вариадные макросы

  • Тип данных «long long int»

Некоторые из этих функций из C включены в C++0x, а некоторые доступны в виде расширений библиотек во многих новых компиляторах для «обычного» C++.

Так что это зависит от того, о каком уровне C вы говорите, о каком уровне стандарта C++ и какой платформе какого компилятора, поскольку реализации компилятора всегда имеют различную поддержку стандартов и, конечно, ошибок.

Кроме того, есть ключевые слова, используемые в C++, которые не были определены в C и, следовательно, доступны для использования в качестве имен переменных в C, но вызывают ошибку компилятора C++. В C совершенно законно использовать следующие слова в качестве имен переменных или функций, но они, очевидно, заставят C++ бросить шипение...

  • template
  • new
  • class

О, и "goto" ведет себя по-разному в C++ и C. В C++ "goto" нельзя использовать для перехода через инициализацию переменной, но это нормально для C. То же самое касается операторов switch. В C вы можете написать оператор switch или набор операторов goto, которые не будут компилироваться в C++.

Что еще? «strchr» работает по-разному в C и C++. В C он возвращает указатель на char. В C++ он возвращает указатель const char. Если вы используете этот вывод из strchr определенным образом в C, он может разбить куски в C++ из-за корректности const C++.

Встроенные функции обрабатываются по-разному. В C они привязаны к файлу, но в C++ по умолчанию имеют внешнюю связь.

Код C++ нуждается в прототипах функций, определенных с помощью extern "C" для вызова функции C.

C++ искажает символы имен функций, а C — нет.

"В теории нет разницы между теорией и практикой. На практике есть. " - Йоги Берра

0
ответ дан 4 December 2019 в 02:24
поделиться