以下代码 -
#define test_macro (some_typename) some_typename func (some_typename x) {return x;}
test_macro (int)
无法使用g ++ 4.4.7编译,产生以下错误 -
constructor, destructor, or type conversion before 'some_typename'
unqualified-id before 'int'
')' before 'int'
我哪里错了?
答案 0 :(得分:8)
宏不了解类型名称或任何其他语言功能,因为它们是预处理器的一部分。您的代码唯一的问题是格式化,即一些额外的空格:
#define test_macro(some_typename) some_typename func (some_typename x) {return x;}
test_macro(int)
另外,当您需要将typename作为参数时,请考虑模板 - 他们擅长:)