Создание пользовательских флагов #warning - PullRequest
5 голосов
/ 12 ноября 2010

Я создаю коммерческое приложение, и мы используем некоторый GPL-код, чтобы помочь нам в этом.

Как добавить операторы #warning или #error, чтобы при сборке кода для отладки он предупреждал, а при сборке для выпуска выдавались ошибки?

Я могу сделать:

#warning this code is released under a CCL licensing scheme, see Source_Code_License.rtf
#warning this code is not LGPL-compliant
#warning this code was copied verbatim from a GP Licensed file

в начале файлов, но можно ли сделать лучше? Есть ли лучший способ пометить файл, если он включен?

Я использую Objective-C ++ с gcc или clang.

Ответы [ 2 ]

5 голосов
/ 12 ноября 2010
#ifdef SOME_SYMBOL
#error "foobar"
#else
#warning "foobar"
#endif

NDEBUG имеет немного другую цель (управление assert) и может быть #undef и переопределяться выборочно (повторно включая assert.h для осуществления изменения), так что он, вероятно, не будет правильным символом. Но это стандартный макрос, который можно использовать.

Обратите внимание, что #error является стандартным, но #warning является расширением.

3 голосов
/ 12 ноября 2010

Вместо этого используйте сообщение #pragma.

...