Создайте собственные #предупреждающие флаги

Я создаю коммерческое приложение, и мы используем некоторый код 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.


person Stephen Furlani    schedule 12.11.2010    source источник
comment
Если вы используете Objective C, то зачем вы добавили тег c++?   -  person sbi    schedule 12.11.2010
comment
Я использую Objective-C++, некоторые из них - C++, некоторые - Objective-C, а некоторые просто смешаны и беспорядочны повсюду.   -  person Stephen Furlani    schedule 12.11.2010
comment
@Стивен; Я извиняюсь за то, что испортил это. (Вы должны правильно @address комментировать ответы, иначе те, кому вы отвечаете, не увидят их на вкладке «Ответы». Я нашел это случайно.)   -  person sbi    schedule 14.11.2010
comment
@sbi, извини. Я не знал, что @ действительно работает. Я думал, что это твиттер. Id должен выделить себя или что-то в этом роде.   -  person Stephen Furlani    schedule 15.11.2010
comment
@sbi, куда я могу обратиться, чтобы сказать людям, что это нужно выделить? мета?   -  person Stephen Furlani    schedule 15.11.2010
comment
@Stephen: Что нужно выделить?   -  person sbi    schedule 15.11.2010
comment
@sbi, как и его @Stephen часть. Синий, или полужирный, или что-то в этом роде. Просто знать, что это работает на каком-то уровне, обратной связи или что-то в этом роде.   -  person Stephen Furlani    schedule 15.11.2010
comment
@Стивен: А, понятно. Можно было бы даже ссылку сделать. Вы могли бы спросить на мета. (На вашем месте я бы сначала приложил некоторые усилия, чтобы найти правильный тег для этого, а затем проверил, не задавался ли этот вопрос раньше.)   -  person sbi    schedule 15.11.2010


Ответы (2)


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

person Hans Passant    schedule 12.11.2010
comment
Конечно, вот пример: #warning Это пользовательское предупреждение. - person vinnybad; 18.01.2014

#ifdef SOME_SYMBOL
#error "foobar"
#else
#warning "foobar"
#endif

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

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

person Community    schedule 12.11.2010