Как вызвать __cplusplus (C ++) #ifdef? - PullRequest
15 голосов
/ 21 июля 2011
#ifdef __cplusplus
// C++ code
#else
// C code
#endif

Структура такая.У меня вопрос, как на самом деле вызвать #ifdef на?

Я имею в виду, в программе?Какой код, который я пишу, может включить #ifdef?

Например, в этом случае.

#define __cplusplus

это включит?

Ответы [ 4 ]

19 голосов
/ 21 июля 2011

"# define __cplusplus"

пустит?

Да, он "пропустит".

__cplusplus должен автоматически определяться компилятором C ++. C ++ использует другое искажение имени и макрос, часто используемый для обеспечения совместимости заголовков C с C ++:

#ifdef __cplusplus
extern "C" {
#endif

...

#ifdef __cplusplus
}
#endif
15 голосов
/ 21 июля 2011

Просто скомпилируйте его с помощью компилятора C ++, и __cplusplus определяется в этом случае автоматически.

13 голосов
/ 21 июля 2011

Стандарт C ++ предусматривает, что __cplusplus всегда будет определяться в программах на C ++. Стандарт C, очевидно, нет. Это означает, что пользователю не нужно прилагать никаких усилий для включения этого механизма.

8 голосов
/ 22 июля 2011

Компилятор C ++ определяет это автоматически.

Поскольку он начинается с двух последовательных подчеркиваний, он зарезервирован.Вам не разрешено определять его самостоятельно (т.е. попытка сделать это приводит к неопределенному поведению).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...