我使用-LITTLE
标志来选择 little endian 计算和
编译时我的项目中的 big endian 计算-BIG
。
#ifdef LITTLE
{
// i'm using i for operating one loop
}
#endif
/* If the system is big-endian, store bytes in array as forward order */
#ifdef BIG
{
// using i for loop
}
#endif
喜欢
gcc -LITTLE my_c_file.c
我想检查用户是否在编译时没有给出任何标志,然后编译没有发生并给出错误。
我该怎么做?
答案 0 :(得分:9)
我认为你的意思是gcc -DLITTLE
。
您可以使用以下内容:
#if !defined(LITTLE) && !defined(BIG)
#error either LITTLE or BIG must be defined
#endif
猜测,你可能也想要:
#if defined(LITTLE) && defined(BIG)
#error only one of LITTLE or BIG must be defined
#endif
当然,如果你能编写的代码不关心你正在运行的机器的字节顺序并避免整个混乱,那就更好了。
答案 1 :(得分:2)
尝试
#if !defined(LITTLE) && !defined(BIG)
#error "Either LITTLE or BIG has to be defined"
#endif
答案 2 :(得分:1)
您可以自动检测平台的字节性别。请参阅boost/detail/endian.hpp。