Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在编译时检查标志的存在?_C_C Preprocessor - Fatal编程技术网

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:我个人认为,我会将它放在一个公共头文件中,并在依赖于定义的
之一的任何代码位之前包含它。