编译器找不到预处理器指令(定义)

Preprocessor directive (define) not found by compiler

我正在开发一个库,其中一些变量的大小取决于 #define 和一些根据其他 #define 的值创建的 #define。

例如

int variable1[SIZE_USER]
#if SIZE_USER>3
  #define CONDITION 1
#else
  #define CONDITION 0
#endif

这个想法是,当用户想要使用库时,他们会在那里创建自己的头文件,其中包含所有需要的预处理器指令 (#define),并在 [=29= 所在的同一目录中使用该文件] 文件不在库源文件中。

问题是,当我将配置文件(包含所有#define)包含在我的所有库头文件所在的同一目录中时,我没有问题。

#include <config.h>
//My Library Code...

但是,如果我在我的库的源文件之外声明配置头文件,编译器将找不到在 "main.cpp" 文件中声明的#define。

#include<config.h>
#include<myLibrary.h>
//User code...

关于编译器的工作原理,我是否明显遗漏了什么?

#define SIZE_USER 4

int variable1[SIZE_USER]
#if SIZE_USER > 3
  #define CONDITION 1
#else
  #define CONDITION 0
#endif

第一个问题是 #if 指令中缺少空格。

#include "myLibrary.h"

第二个问题:使用 "" 作为您包含的 headers 并且空格很重要。