我可以将字符串文字转换为标识符

时间:2012-08-27 10:14:28

标签: c++ visual-c++

在Visual C ++中,给出了此函数声明:

int main();

在函数体中,我想定义一个变量,它的类型与函数的(返回)类型相同,但是假设我不想使用int或main,所以我尝试过这样的事情:

int main() {
    decltype(__identifier(__FUNCTION__)) x;
}

这不起作用,因为__identifier不接受字符串文字。我可以使用某种方法将字符串文字转换为标识符吗?或者,有没有一种方法可以在函数体中定义类型为int的x,而不使用return type(int)或function name(main)?

1 个答案:

答案 0 :(得分:1)

实际上,它确实接受字符串文字,但你必须禁止它的工作警告。你可以这样做:

#define SYMBOL_FROM_STRING(S) (__pragma(warning(suppress: 4483)) __identifier(S))

decltype(SYMBOL_FROM_STRING(__FUNCTION__)) x;