2011-07-27 38 views
1

我有這個定義設置在頂部,即時調用時,它得到一個錯誤的#define宏錯誤

/*-------------------__RETURN DEFINE-----------------*/ 
    #define __return(x) \ 
    pool_err= POOL_PUTSPACE_(i_exit_cb->Pool_addr,&l);\ 
    if (pool_err != 0) \ 
    { exit(EXIT_FAILURE); } \ 
    return(x); 
    /*---END OF __RETURN DEFINE-----*/ 

我得到一個錯誤,如下面的(g是一個結構和csr_val是內部分配爲短值)

__return(g->csr_val); 
    Warning 86: argument 2 conflicts with formal definition 
+2

請注意,以下劃線開頭的符號名稱是爲編譯器保留的。 –

+0

g是一個結構體或一個_pointer_結構體?如果前者,它會是g.csr_val。 – JAB

+2

該代碼片段中只有2個參數是'POOL_PUTSPACE_'。那是什麼?什麼是'l'? (再說一遍,'l'不是名字的絕佳選擇!) –

回答

2

錯誤提到了第二個參數,並且帶有2個參數的唯一函數調用是POOL_PUTSPACE_。我猜想&l可能需要演員陣容。

1

__開頭的標識符保留給編譯器使用。或許__return與內部定義的宏或函數衝突?