编译器

时间:2018-05-17 14:06:17

标签: c++ preprocessor-directive

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

e.g。

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

这个想法是,当用户想要使用库时,他们会创建自己的头文件,其中包含所需的所有预处理器指令(#define),并将此文件用于其中" main的同一目录。 CPP"文件是否在库源文件中。

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

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

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

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

在编译器如何工作方面是否有一些明显的遗漏?

1 个答案:

答案 0 :(得分:1)

#define SIZE_USER 4

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

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

#include "myLibrary.h"

第二个问题:使用&#34;&#34;对于你所包含的标题和空格很重要。