This是一个c程序,演示了libxml2库的一些基本用法。以下是主要功能:
LIBXML_TEST_VERSION example1Func(argv[1]);
这句话代表什么?
我只能告诉LIBXML_TEST_VERSION显然是一个常量,然后是函数调用,该函数不返回任何内容(void)。但我不知道整个声明是什么意思。
答案 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