Обратите внимание, что строки
keyword (SOME_CONSTANT), \
являются частью макроса. То есть они будут появляться везде, где развернуты макросы SPCDLL_ERROR_KEYWORDS
и PARAMETERS_KEYWORDS
.
И где бы это расширение ни происходило, оно будет использовать определение keyword()
в последней строке вашего фрагмента кода. Таким образом, выражение PARAMETERS_KEYWORDS
фактически расширится до
{
LIMIT_LOW,
LIMIT_HIGH,
LEVEL,
HOLDOFF,
};
Однако, это зависит от того, как keyword()
фактически определено в точке использования, оно может быть определено для расширения до чего-либо, что C Препроцессор способен производить. Например,
#define keyword(foo) 1
char foo[] = SPCDLL_ERROR_KEYWORDS;
printf("There are %d SPCDLL_ERROR keywords\n", sizeof(foo));
приведет к фактическому количеству keyword()
вызовов в SPCDLL_ERROR_KEYWORDS
.
. Я не имею понятия, в каком контексте эти макросы фактически используются / полезны, но такие конструкции как правило, служат определенной цели c: эффект keyword(FOO)
в основном такой же, как FOO
сам по себе, но отмечает использование FOO
для других целей . Такое другое использование может быть в некоторых других макросах или других инструментах, которые используются для обработки исходного кода. Как и инструменты документации, линтеры, автоматические c сценарии генерации заголовков и т. Д. И т. Д.
Единственный способ выяснить это на самом деле - найти, где выражение \<keyword\>
используется во всей базе кода , Скорее всего, это позволит вам наткнуться на комментарии, которые предоставляют подсказки, и / или некоторый скрипт, который фактически выполняет дополнительную обработку.