Jar*_*sie 2 c++ macros templates function
我有以下宏用于在当前作用域或命名空间中生成函数:
#define MAKE_FUNC(FNAME) \
template <typename T> \
T ##FNAME## (const T& t) \
{\
return t; \
}
MAKE_FUNC(foo)
MAKE_FUNC(boo)
int main()
{
foo(1);
boo(2);
}
Run Code Online (Sandbox Code Playgroud)
以下是编译上述代码时的错误消息:
prog.cpp:8:1: error: pasting "Tfoo" and "(" does not give a valid preprocessing token
prog.cpp:9:1: error: pasting "Tboo" and "(" does not give a valid preprocessing token
prog.cpp:8: error: ISO C++ forbids declaration of ‘Tfoo’ with no type
prog.cpp:9: error: ISO C++ forbids declaration of ‘Tboo’ with no type
prog.cpp: In function ‘int main()’:
prog.cpp:13: error: ‘foo’ was not declared in this scope
prog.cpp:14: error: ‘boo’ was not declared in this scope
Run Code Online (Sandbox Code Playgroud)
似乎连接失败了,无论如何都存在这个问题?
| 归档时间: |
|
| 查看次数: |
2632 次 |
| 最近记录: |