2017-10-09 118 views
-1

我想通过一个字符串 给出的代码,打印我的宏的价值字符串转换为++宏使用C

#include<iostream> 
#define abc 7 

using namespace std; 

int main() 
{ 
string str = "abc"; 
cout<<str<<endl; 
} 

输出应该是7,如果我做的cout海峡

+1

由于宏只是用它们的值替换,所以'cout << abc << endl;' –

+0

问题是 - 我将从一个文件中读取str值,并且该文件中会有多个宏 –

+0

不好的问题(很不清楚),缺少一些[MCVE](http://stackoverflow.com/help/mcve)。你可以考虑一些[X宏](https://en.wikipedia.org/wiki/X_Macro) –

回答

3

你不能。在实际编译之前,宏扩展在早期的翻译阶段发生。这意味着您的需求无法在C++中实现。但std::map(或std::unordered_map)是一个关联的容器实现,可用于在运行时转换字符串