Что означает "#if cpp" в файле C? - PullRequest
2 голосов
/ 11 февраля 2009

Сейчас я работаю над некоторым исходным кодом. В некоторых кодах я нахожу их в голове. Не знаю, что это значит. Есть идеи?

#include "pth_p.h"

#if cpp

#ifndef PTH_DEBUG

#define pth_debug1(a1)                     /* NOP */
#define pth_debug2(a1, a2)                 /* NOP */
#define pth_debug3(a1, a2, a3)             /* NOP */
#define pth_debug4(a1, a2, a3, a4)         /* NOP */
#define pth_debug5(a1, a2, a3, a4, a5)     /* NOP */
#define pth_debug6(a1, a2, a3, a4, a5, a6) /* NOP */

#else

#define pth_debug1(a1)                     pth_debug(__FILE__, __LINE__, 1, a1)
#define pth_debug2(a1, a2)                 pth_debug(__FILE__, __LINE__, 2, a1, a2)
#define pth_debug3(a1, a2, a3)             pth_debug(__FILE__, __LINE__, 3, a1, a2, a3)
#define pth_debug4(a1, a2, a3, a4)         pth_debug(__FILE__, __LINE__, 4, a1, a2, a3, a4)
#define pth_debug5(a1, a2, a3, a4, a5)     pth_debug(__FILE__, __LINE__, 5, a1, a2, a3, a4, a5)
#define pth_debug6(a1, a2, a3, a4, a5, a6) pth_debug(__FILE__, __LINE__, 6, a1, a2, a3, a4, a5, a6)

#endif /* PTH_DEBUG */

#endif /* cpp */

Ответы [ 3 ]

10 голосов
/ 11 февраля 2009

это тестирование, если некоторая константа с именем cpp, которая видна препроцессору (вероятно, макрос), отлична от нуля.

Обычное соглашение состоит в том, что все макросы должны быть в верхнем регистре, чтобы они были более очевидными, но это не обязательно (как, очевидно, имеет место).

Я предполагаю, что это означает c ++, и один из включенных заголовков (возможно, pth_p.h?) Определяет его, если используется компилятор c ++. Если дело обстоит так, есть более стандартные вещи для использования, которые являются предпочтительными, такие как это:

#ifdef __cplusplus
4 голосов
/ 11 февраля 2009

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

2 голосов
/ 11 февраля 2009

Я подозреваю, что это проверяет, компилируется ли код компилятором c ++ или компилятором c. Если C ++, макросы определяются, если также установлен флаг PTH_DEBUG. Я подозреваю, что этот флаг будет установлен при вызове компилятора. Если C, макросы не определены. Почему это так, зависит от того, для чего предназначены макросы pth_debug.

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