Closed. This question is off-topic。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗? Update the question,所以它是on-topic,用于堆栈溢出。
                        
                        6年前关闭。
                                                                                            
                
        
所以我的问题是,为什么当我包含一个包含“全局变量”的头文件时:

#define DRAWING_OBJECTS_COUNT 2


我的其他头文件无法识别标识为“ DRAWING_OBJECTS_COUNT” ?:

 DoubleTapResetUnit * unitList[DRAWING_OBJECTS_COUNT];

最佳答案

您有一个标头,将其称为HeaderA,它定义了DRAWING_OBJECTS_COUNT,还有另一个标头,将其称为HeaderB,它使用了DRAWING_OBJECTS_COUNT,对吗?为了使用HeaderA的声明,HeaderB必须通过#include语句(直接或间接)包括HeaderA。如果您这样做了,但是HeaderB仍然无法理解DRAWING_OBJECTS_COUNT是什么,那么我可以想到两种可能性:


DRAWING_OBJECTS_COUNT被定义在#undef之后但HeaderB尝试使用它的某些代码的DRAWING_OBJECTS_COUNT修改。
您在HeaderA和HeaderB之间有一个循环引用,其中HeaderA包括HeaderB,反之亦然,但是在HeaderA有机会定义DRAWING_OBJECTS_COUNT之前,HeaderB已得到处理。避免在头文件中使用循环引用。

09-26 08:16