2015-12-22 41 views
1

我在名爲foo.c的文件中有以下代碼。爲什麼在C函數中定義的宏沒有被Doxygen記錄下來?

/** @file */ 
#include <stdio.h> 

/** Prints hello */ 
#define hello() printf("hello, ") 

int main() 
{ 
    /** Prints world */ 
    #define world() printf("world\n") 
    hello(); 
    world(); 
} 

我在同一個目錄下有一個名爲Doxyfile的文件。

PROJECT_NAME = Foo 
JAVADOC_AUTOBRIEF = YES 

當我運行doxyfile命令,我得到的是這樣的一個文件。

Doxygen output

爲什麼沒有爲world()宏生成的文檔?我怎樣才能確保爲world()宏生成文檔,而不會將其從功能main()中刪除?

+7

由於宏具有全局作用域,爲什麼不能在'main()'的定義之前定義'world()'? – owacoder

+0

您是否嘗試將#define和評論移至第1列? – chqrlie

+0

Doxygen可能使用宏對齊的陳舊規則(或具有類似陳舊或錯誤定義的規則的解析器)。在ANSI C之前,[宏不允許在行首和'#']之間有空格(http://www.delorie.com/gnu/docs/gcc/cpp_48.html)。 – ShadowRanger

回答

相關問題