在Visual C ++中,给出了此函数声明:
int main();
在函数体中,我想定义一个变量,它的类型与函数的(返回)类型相同,但是假设我不想使用int或main,所以我尝试过这样的事情:
int main() {
decltype(__identifier(__FUNCTION__)) x;
}
这不起作用,因为__identifier不接受字符串文字。我可以使用某种方法将字符串文字转换为标识符吗?或者,有没有一种方法可以在函数体中定义类型为int的x,而不使用return type(int)或function name(main)?
答案 0 :(得分:1)
实际上,它确实接受字符串文字,但你必须禁止它的工作警告。你可以这样做:
#define SYMBOL_FROM_STRING(S) (__pragma(warning(suppress: 4483)) __identifier(S))
decltype(SYMBOL_FROM_STRING(__FUNCTION__)) x;