0

在 Visual C++ 中,给定这个函数声明:

int main();

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

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

这不起作用,因为 __identifier 不接受字符串文字。我可以使用某种方法将字符串文字变成标识符吗?或者,有没有一种方法可以在函数体内定义 int 类型的 x,而不使用返回类型 (int) 或函数名 (main)?

4

1 回答 1

1

实际上,它确实接受字符串文字,但您必须取消警告才能使其正常工作。你可以这样做:

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

decltype(SYMBOL_FROM_STRING(__FUNCTION__)) x;
于 2016-03-25T05:42:24.147 回答