我必须用从 XML 文件获取的数组元素替换 400 个文字浮点数。
您能否修复此代码以使用数组元素而不是文字,发布编码解决方案?
在 https://cpp.sh/ 上,我使用以下代码收到以下编译器错误。
#define SET_THING(guest, toy, size, thing)\
double toy[size] = thing
int main ()
{
int i2[2];
i2[0] = 2;
SET_THING(guest,name, i2[0], {1.9});
}
main.cpp:10:25: error: variable-sized object may not be initialized
SET_THING(guest,name, i2[0], {1.9});
^~~~~
main.cpp:2:12: note: expanded from macro 'SET_THING'
double toy[size] = thing
^~~~
1 error generated.
在https://cpp.sh/上,我没有收到以下代码的编译器错误:
#define SET_THING(guest, toy, size, thing)\
double toy[size] = thing
int main ()
{
int i2[2];
i2[0] = 2;
SET_THING(guest,name, 2, {1.9});
}
我尝试向宏发送非数组变量,但没有成功。
标准 C++ 没有可变长度数组 (VLA)。不过,您可以将其改为
std::vector<double>
。
#include <iostream>
#include <vector>
#define SET_THING(guest, toy, size, thing) \
std::vector<double> toy thing; \
toy.resize(size)
int main() {
int i2[2];
i2[0] = 2;
SET_THING(guest, name, i2[0], {1.9});
std::cout << name.size() << '\n' // 2
<< name[0] << '\n'; // 1.9
}
注意:尚不清楚
guest
的用途。我建议删除它。