2011-07-27 37 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与内部定义的宏或函数冲突?