什么是“CONST func(arg);”用C语言表示?

时间:2011-05-17 08:18:18

标签: c semantics

This是一个c程序,演示了libxml2库的一些基本用法。以下是主要功能:

LIBXML_TEST_VERSION example1Func(argv[1]);

这句话代表什么?

我只能告诉LIBXML_TEST_VERSION显然是一个常量,然后是函数调用,该函数不返回任何内容(void)。但我不知道整个声明是什么意思。

3 个答案:

答案 0 :(得分:4)

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

答案 1 :(得分:2)

似乎LIBXML_TEST_VERSION是一个扩展为一个或多个语句的宏。从Google code search开始,似乎定义如下:

#define LIBXML_TEST_VERSION xmlCheckVersion(20703);

其中20703是您正在编译的任何版本。

此声明独立于对example1Func()的调用。

答案 2 :(得分:2)

在ALL_UPPERCASE中命名C预处理器宏是标准约定。正如您所建议的,这通常用于编译时常量。但是,还有其他用途。

现在举个例子。原始来源看起来像这样(评论是我的):

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