簡體   English   中英

“CONST func(arg);”在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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM