[英]What does “void (* parse_arg_function)(const char*)” function argument mean in C?
[英]What does “CONST func(arg);” mean in C language?
這是一個ac程序,演示了libxml2庫的一些基本用法。 以下是主要功能:
LIBXML_TEST_VERSION example1Func(argv[1]);
這個陳述代表什么?
我只能說LIBXML_TEST_VERSION顯然是一個常量,然后是函數調用,該函數不返回任何內容(void)。 但我不知道整個聲明是什么意思。
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
看起來好像LIBXML_TEST_VERSION
是一個擴展為一個或多個語句的宏。 從Google代碼搜索中可以看出,定義如下:
#define LIBXML_TEST_VERSION xmlCheckVersion(20703);
其中20703
是你正在編譯的任何版本。
此語句獨立於對example1Func()
的調用。
在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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.