我正在编写一些序列化代码,而且很明显,这段代码需要知道结果应该是大端还是小端,所以我尝试声明这样的枚举:
namespace TerrainGenerator
{
...
enum Endianess {LITTLE_ENDIAN, BIG_ENDIAN};
...
}
但出于某种原因,我的IntelliSense告诉我这些值已经宣布。
运行g ++也给了我错误,告诉我他们被定义为1234和4321(分别为小端和大端)。
当我停止包括<string>
时,我注意到错误消失了。
在某处我可以找到已在std中声明的常量列表。库?
我正在运行Arch Linux,内核4.12.8-2-ARCH。
正在运行strings /usr/lib/libstdc++.so.6 | grep LIBCXX
会返回一堆行,最高版本号为GLIBCXX_3.4.24
。
运行ldconfig -p | grep stdc++
会返回:
libstdc++.so.6 (libc6,x86-64) => /usr/lib/libstdc++.so.6
libstdc++.so (libc6,x86-64) => /usr/lib/libstdc++.so
(由https://stackoverflow.com/a/10355215/6242052建议找到我正在使用的std.libs的版本)
编辑:如果这些值为#defined
,则在1-10的范围内,在包含所有标题后,对#undef
它们的想法有多糟糕? (并且可能在我的代码之后重新#define
-