Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/156.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++ 标识符_uva_ARGS_uuu只能出现在可变宏的替换列表中_C++_Macros - Fatal编程技术网

C++ 标识符_uva_ARGS_uuu只能出现在可变宏的替换列表中

C++ 标识符_uva_ARGS_uuu只能出现在可变宏的替换列表中,c++,macros,C++,Macros,我试图创建一个宏来执行api调用。我当前的问题是调用参数的传递。我收到以下错误消息: 标识符_uva_ARGS_uuu只能出现在可变宏的替换列表中 从技术上讲,可以通过使用运算符加载来解决这一问题,但我相信应该有一种方法可以让它保持这样的简单并使其正常工作。可变宏语法不是这样工作的;…必须表示宏的附加参数。宏不能像迭代函数调用那样在单独的括号中包含多组参数 我认为你必须做到以下几点: #define DO_CALL(api_name, ...) wow64hg::do_call(FNV(#api

我试图创建一个宏来执行api调用。我当前的问题是调用参数的传递。我收到以下错误消息:

标识符_uva_ARGS_uuu只能出现在可变宏的替换列表中


从技术上讲,可以通过使用运算符加载来解决这一问题,但我相信应该有一种方法可以让它保持这样的简单并使其正常工作。

可变宏语法不是这样工作的;
必须表示宏的附加参数。宏不能像迭代函数调用那样在单独的括号中包含多组参数

我认为你必须做到以下几点:

#define DO_CALL(api_name, ...) wow64hg::do_call(FNV(#api_name), __VA_ARGS__)

const auto status = DO_CALL(TerminateProcess, process_handle, 0);

可变宏语法不是这样工作的;
必须表示宏的附加参数。宏不能像迭代函数调用那样在单独的括号中包含多组参数

我认为你必须做到以下几点:

#define DO_CALL(api_name, ...) wow64hg::do_call(FNV(#api_name), __VA_ARGS__)

const auto status = DO_CALL(TerminateProcess, process_handle, 0);

谢谢你的回复。事实上我已经知道了,这是有效的。但是,我们特别希望它采用我的帖子中的格式(api名称和参数之间用括号隔开,如DO_CALL(api_name)(…)@MemeMachine),我认为你不可能只用一个宏就实现这一点。您可以使用一个扩展为lambda的宏来包装实际调用@米尔斯布德内克嗯,我明白了。谢谢你的回复。事实上我已经知道了,这是有效的。但是,我们特别希望它采用我的帖子中的格式(api名称和参数之间用括号隔开,如DO_CALL(api_name)(…)@MemeMachine),我认为你不可能只用一个宏就实现这一点。您可以使用一个扩展为lambda的宏来包装实际调用@米尔斯布德内克嗯,我明白了。