Что значит "CONST func (arg);"значит на языке C? - PullRequest
2 голосов
/ 17 мая 2011

Эта - программа переменного тока, демонстрирующая базовое использование библиотеки libxml2.Ниже приводится цитата из основной функции:

LIBXML_TEST_VERSION example1Func(argv[1]);

Что означает этот оператор?

Я могу только сказать, что LIBXML_TEST_VERSION, очевидно, является константой, а после этого - вызовом функции, чтофункция ничего не возвращает (void).Но я понятия не имею, что означает утверждение в целом.

Ответы [ 3 ]

4 голосов
/ 17 мая 2011

LIBXML_TEST_VERSION не является константой - это макрос - см. Документацию здесь:

Macro: LIBXML_TEST_VERSION

#define LIBXML_TEST_VERSION
Macro to check that the libxml version in use is compatible with the version the software has been compiled against

Это также не имеет ничего общего с вызовом example1func() - код должен выглядеть следующим образом (комментариимои):

LIBXML_TEST_VERSION    // test libxml version

example1func();        // call example1func
2 голосов
/ 17 мая 2011

Это стандартное соглашение для именования макросов препроцессора C в ALL_UPPERCASE. Как вы предлагаете, это часто используется для констант времени компиляции. Однако есть и другие варианты использования.

Теперь к вашему примеру. Оригинальный источник выглядит так (комментарии мои):

LIBXML_TEST_VERSION    /* line 1 */
example1Func(argv[1]); /* line 2 */

Первая строка - это макрос C. Вторая строка - это вызов функции. Эти два слова не являются частью одного и того же утверждения, которое подразумевает ваш вопрос. К сожалению, способ определения LIBXML_TEST_VERSION не требует точки с запятой в конце; если бы это было так, не было бы путаницы в отношении того, являются ли две строки частью одного и того же утверждения.

На случай, если вам интересно, что именно является LIBXML_TEST_VERSION:

Macro: LIBXML_TEST_VERSION

#define LIBXML_TEST_VERSION
Macro to check that the libxml version in use is compatible
with the version the software has been compiled against
2 голосов
/ 17 мая 2011

Кажется, что LIBXML_TEST_VERSION - это макрос, который расширяется до одного или нескольких операторов. Начиная с Поиск кода Google , определение выглядит примерно так:

#define LIBXML_TEST_VERSION xmlCheckVersion(20703);

где 20703 - это версия, с которой вы компилируете.

Это утверждение не зависит от вызова example1Func().

...