определенный (XXXX) макрос в C / C ++?

Я прошёл исходный код BSON и наткнулся на то, чего никогда раньше не видел.

Строка 22 в bson-macros.h:

#if !defined(BSON_INSIDE) && !defined(BSON_COMPILATION)
#error "Only <bson.h> can be included directly."#endif

Что defined(XXXX) макрос выше? Я могу догадаться, что он делает, но я не могу найти никакой документации об этом. Это специфично для некоторых компиляторов? Это дает мне предупреждение W4 на Microsoft Visual C ++ (что я пытаюсь решить в моем проекте).

-2

Решение

От 6.10.1

Выражение, управляющее условным включением, должно быть целым числом
константное выражение за исключением того, что: идентификаторы (включая те,
лексически идентичны ключевым словам) интерпретируются как описано
ниже; 166) и может содержать унарные операторные выражения вида

  defined identifier

или же

  defined ( identifier )

который оценивается в 1, если идентификатор в настоящее время определен как макрос
название
(то есть, если он предопределен или был предметом
#define директива предварительной обработки без вмешательства #undef директива с тем же идентификатором субъекта), 0, если это не так.

Это не macro — это оператор.

4

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]