Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/160.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
ARMC6忽略预处理器指令 我用ARM编译器V611编译了一些C++。作为这段代码的一部分,我使用以下预处理器指令有条件地包括一个文件。这没什么不寻常的 #if BOARD == TP_EARHART_V1_0_0 #include "LorawanTP.h" #endif_C++_Arm_C Preprocessor - Fatal编程技术网

ARMC6忽略预处理器指令 我用ARM编译器V611编译了一些C++。作为这段代码的一部分,我使用以下预处理器指令有条件地包括一个文件。这没什么不寻常的 #if BOARD == TP_EARHART_V1_0_0 #include "LorawanTP.h" #endif

ARMC6忽略预处理器指令 我用ARM编译器V611编译了一些C++。作为这段代码的一部分,我使用以下预处理器指令有条件地包括一个文件。这没什么不寻常的 #if BOARD == TP_EARHART_V1_0_0 #include "LorawanTP.h" #endif,c++,arm,c-preprocessor,C++,Arm,C Preprocessor,我的问题是,文件被包括在内,因此,导致了大量错误。我不知道为什么预处理器指令似乎被忽略了 现在,我想到的第一件事是:“很明显,你在其他地方重新定义了BOARD宏,它实际上等于TP\u EARHART\u V1\u 0\u 0”。不幸的是,事实并非如此,我已通过以下方式验证了这一点: #define STRING2(x) #x #define STRING(x) STRING2(x) #pragma message "BOARD = " STRING(BOARD) #if BOARD ==TP_

我的问题是,文件被包括在内,因此,导致了大量错误。我不知道为什么预处理器指令似乎被忽略了

现在,我想到的第一件事是:“很明显,你在其他地方重新定义了BOARD宏,它实际上等于
TP\u EARHART\u V1\u 0\u 0
”。不幸的是,事实并非如此,我已通过以下方式验证了这一点:

#define STRING2(x) #x
#define STRING(x) STRING2(x)
#pragma message "BOARD = " STRING(BOARD)

#if BOARD ==TP_EARHART_V1_0_0
    #include "LorawanTP.h"
#endif
结果如下:

[Warning] node_flow.h@23,9: BOARD = WRIGHT_V1_0_0 [-W#pragma-messages]
我真的不太确定现在该去哪里找。非常感谢您的任何见解

我应该指出,我也尝试了以下几点,但都没有成功:

#if defined BOARD && (BOARD == TP_EARHART_V1_0_0)

我能想到的最接近的是这样的东西

宏:

#define BOARD_TYPE(board) \
    ((defined( BOARD_ ## board) && (BOARD_ ## board)) ? 1 : 0)
#endif
然后在代码文件中:

#if BOARD_TYPE(TP_EARHART_V1_0_0)
    #include "LorawanTP.h"    
#endif
然后在预处理器或其他包含文件集中:

BOARD_TP_EARHART_V1_0_0 = 1

可能相关:@formerlyknownas463035818谢谢。我的问题没有说明,但我确实尝试了
#ifdef BOARD&&(BOARD==xxx
没有用,我将更新以反映这一点。问题是
TP_EARHART_V1_0_0
WRIGHT_V1_0_0
可能没有定义,因此预处理器在平等性测试中使用0作为值,正如@formerlyknownas_463035818所指出的问题所解释的那样。@a程序员但
TP_EARHART_V1_0
and
WRIGHT_V1_0_0
只是
BOARD
的可能值。如果没有定义
BOARD
,那么我的
#pragma消息…
会显示,尽管如此,是吗?还是我完全误解了预处理器的工作方式?
BOARD
被扩展到
WRIGHT_V1_0_0
,然后扩展到
0
。这与
TP\u EARHART\u V1\u 0\u 0
的扩展相比,后者也是
0