[英]Can I make string literal into identifier
在Visual C ++中,給出以下函數聲明:
int main();
在函數主體中,我想定義一個與函數的(返回)類型相同的變量,但是假設我不想使用int或main,因此我嘗試了以下操作:
int main() {
decltype(__identifier(__FUNCTION__)) x;
}
這不起作用,因為__identifier不接受字符串文字。 我可以使用某種方法將字符串文字轉換為標識符嗎? 或者,有沒有一種方法可以在函數體內定義int類型的x,而無需使用返回類型(int)或函數名稱(main)?
實際上,它確實接受字符串文字,但是您必須禁止顯示警告以使其起作用。 你可以這樣做:
#define SYMBOL_FROM_STRING(S) (__pragma(warning(suppress: 4483)) __identifier(S))
decltype(SYMBOL_FROM_STRING(__FUNCTION__)) x;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.