C 如何在编译时检查标志的存在?
我正在使用C 如何在编译时检查标志的存在?,c,c-preprocessor,C,C Preprocessor,我正在使用-LITTLE标志来选择小端点计算和 -BIG用于编译时在我的项目中进行BIG-endian计算 #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 l
-LITTLE
标志来选择小端点计算和-BIG
用于编译时在我的项目中进行BIG-endian计算
#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
像
我想检查用户在编译时是否没有给出任何of标志,然后编译不会发生,并给出一个错误
我该怎么做呢?我想你的意思是
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
当然,如果您可以编写不关心正在运行的机器的终结性的代码,并避免整个混乱,那就更好了。我想您的意思是
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
当然,如果您可以编写不关心正在运行的机器的终结性的代码,并避免整个混乱,那就更好了。试试看
#if !defined(LITTLE) && !defined(BIG)
#error "Either LITTLE or BIG has to be defined"
#endif
试一试
您可以自动检测平台的字节性别。请参阅。您可以自动检测平台的字节性别。请参阅。但是我应该把它放在哪里。?@Mr.32:我个人认为,我应该把它放在一个公共头文件中,并在依赖于定义的
小或大的任何代码位之前包含它。但是我应该把它放在哪里。?@Mr.32:我个人认为,我会将它放在一个公共头文件中,并在依赖于定义的小或大之一的任何代码位之前包含它。