相关疑难解决方法(0)

C/C++宏中的逗号

假设我们有这样的宏

#define FOO(type,name) type name
Run Code Online (Sandbox Code Playgroud)

我们可以使用哪个

FOO(int, int_var);
Run Code Online (Sandbox Code Playgroud)

但并不总是那么简单:

FOO(std::map<int, int>, map_var); // error: macro "FOO" passed 3 arguments, but takes just 2
Run Code Online (Sandbox Code Playgroud)

我们当然可以这样做:

 typedef std::map<int, int> map_int_int_t;
 FOO(map_int_int_t, map_var); // OK
Run Code Online (Sandbox Code Playgroud)

这不是非常符合人体工程学的.必须处理类型不兼容的问题.知道如何用宏来解决这个问题吗?

c c++ macros c-preprocessor

93
推荐指数
4
解决办法
3万
查看次数

标签 统计

c ×1

c++ ×1

c-preprocessor ×1

macros ×1