Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/72.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何#在C中定义具有可变参数的函数的类函数宏_C_Macros - Fatal编程技术网

如何#在C中定义具有可变参数的函数的类函数宏

如何#在C中定义具有可变参数的函数的类函数宏,c,macros,C,Macros,我有一个函数声明为: int func(int a, int b, ...); 然后我想#将类似宏的函数定义为: #define TEST(A,B) func(A,B,0) 但编译器总是抱怨:“错误:应该是声明说明符或“…”,在数值常量之前” 那么,如何消除此错误呢?请确保在#define语句(也可以导入)之前定义了函数,以便编译器将修改a和b的数据类型。或者您也可以尝试将a和b定义为(int)a。这可能是因为编译器不知道如何在vararg中表示0,因为没有可匹配的类型信息。试试(int)0

我有一个函数声明为:

int func(int a, int b, ...);
然后我想#将类似宏的函数定义为:

#define TEST(A,B) func(A,B,0)
但编译器总是抱怨:“错误:应该是声明说明符或“…”,在数值常量之前”


那么,如何消除此错误呢?

请确保在#define语句(也可以导入)之前定义了函数,以便编译器将修改a和b的数据类型。或者您也可以尝试将a和b定义为(int)a。

这可能是因为编译器不知道如何在vararg中表示
0
,因为没有可匹配的类型信息。试试
(int)0
@tadman,不,不行。哎呀,我知道为什么。还有另一个声明
intfunc(inta,intb),情况就是这样。