Могу ли я успешно использовать DEBUG как постоянный символ в C? - PullRequest
2 голосов
/ 24 февраля 2011

В моей учебной работе я сделал это успешно, но только в очень простых программах. Сегодня у меня была более сложная программа, и «Затмение» делало ужасные вещи, когда я определил DEBUG как символ, и эти ужасные вещи не исчезли после того, как я удалил определение. Из другого источника мне сказали, что символ DEBUG используется компилятором gcc, и что я вмешиваюсь в стандартную библиотеку, определяя ее самостоятельно.

Можно ли использовать #define DEBUG самостоятельно? Или нет?

Ответы [ 5 ]

5 голосов
/ 24 февраля 2011

Да, совершенно нормально определить символ DEBUG самостоятельно. Но это не нормально, чтобы определить символ _DEBUG (обратите внимание на начальное подчеркивание): символы, начинающиеся с подчеркивания и заглавной буквы, или два подчеркивания, зарезервированы для использования реализацией (то есть компилятор и набор инструментов). Так как они зарезервированы, вы не должны определять их самостоятельно, но вы, безусловно, можете проверить их существование. См. §7.1.3 стандарта C99.

Еще один символ, о котором следует знать, это NDEBUG, который вы можете определять или не определять, но если вы определите его до включения <assert.h>, это приведет к удалению всех операторов assert.

2 голосов
/ 24 февраля 2011

Если удаление символа не решило вашу проблему, то символ не вызвал вашу проблему.

Я никогда не слышал о DEBUG как о символе, но _DEBUG - это , используемый Visual Studio . Кроме того, NDEBUG используется <assert.h> для отключения утверждений assert.

1 голос
/ 24 февраля 2011

DEBUG - это немного общий термин, который можно использовать для такого рода вещей, просто потому, что у каждой из неисчислимых миллионов кодовых обезьян на планете тоже будет такая же идея.

Вам лучше использовать что-то, что вряд ли будет конфликтовать, например PAX_DEBUG или YOURCOMPANYNAME_BTREEMODULE_DEBUG или что-то подобное.

0 голосов
/ 24 февраля 2011

Вот почему "новые" языки имеют пространства имен . Не используйте это. В нашем коде мы использовали бы _DEBUG вместо этого (или вы могли бы использовать _DEBUG_ или __DEBUG__, некоторым людям не нравится использовать подчеркивание на передней панели).

РЕДАКТИРОВАТЬ: я ошибся при использовании _DEBUG (мы не используем это). Мы используем __DEBUG__ (два подчеркивания спереди и сзади).

0 голосов
/ 24 февраля 2011

Это может быть возможно, но вы перестаете пытаться это выяснить, это определенно плохая практика.

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