我有以下定义:
#define STRING_OBJECT_1 "bird"
#define STRING_OBJECT_2 "dog"
#define STRING_OBJECT_3 "cat"
#define STRING_OBJECT_4 "human"
#define STRING_OBJECT_5 "cow"
#define STRING_OBJECT_6 "snake"
#define STRING_OBJECT_7 "penguin"
#define STRING_OBJECT_8 "monkey"
我希望仅使用STRING_OBJECT
编号STRING_OBJECT_ + "(number string)"
,因此基本上不能直接输入STRING_OBJECT_1
。
无论如何在C ++中使用带有字符串宏的循环吗?
答案 0 :(得分:5)
无论如何在C ++中使用带有字符串宏的循环吗?
不,没有。
在编译源代码以创建目标代码之前处理宏。
for
循环中的变量值是在运行时设置的。因此,他们无法使用宏。
最好的办法是用数组变量扩充代码,并在for
循环中使用数组变量。
#define STRING_OBJECT_1 "bird"
...
#define STRING_OBJECT_8 "monkey"
std::string object_array[] = {STRING_OBJECT_1, ..., STRING_OBJECT_8};
for ( int i = 0; ... )
{
do_something(object_array[i]);
}
答案 1 :(得分:2)
否,你不能这样做。宏不属于 C / C ++ 语言。
宏由预处理器替换为其值编译时间。您无法在运行时中更改宏。