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

尤多普

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

例如

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

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

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

IE

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

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

IE

#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"

第二个问题:对包含的标题和空格使用 "" 很重要。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

哪个gfortran编译器标志与警告“非法预处理器指令”相关联?

如何区分预处理器和编译器指令?

C用于指定ARM或Thumb模式的预处理器/编译器指令?

编译器开关还是预处理器开关?

具有预处理器的C ++“编译器”

clang编译器中用于定义预处理器要使用的宏的标志是什么?

C预处理器包含指令

Clang编译器错误:预处理器表达式开头的令牌无效

编译器是否使用C预处理器输出中的行标记?

Dart中有编译器预处理器吗?

预处理器存储的宏定义

使用预处理器定义指针

定义=时的预处理器错误

预处理器,汇编器和链接器是否是编译器的一部分?

如何在整个编译过程中遵循预处理器指令

将预处理指令引入Cray编译器的Fortran代码的正确方法

C#中的自定义预处理器指令

如何在C#中定义预处理器指令全局

如何在C中以任何预处理器指令形式定义一组配置

何时使用预处理器指令在C ++中定义函数?

从编译器获取参数时,有没有办法避免预处理器宏?

为什么只能通过MCU GCC编译器(STM32CubeIDE)的预处理器激活FFT功能?

我可以测试预处理器指令的值吗?

ghc / flymake挂在预处理器指令上

Dart const作为预处理器指令

在Visual Studio中的哪里指定预处理器指令?

在预处理器指令中结合 ## 和 _type

为什么#pragma被视为预处理器指令?

使用预处理器指令从C代码进行AST