关于define的嵌套 问题
本帖最后由 我是大甲鱼 于 2017-8-30 20:09 编辑#ifndef __CAMERA_H__
#define __CAMERA_H__
#include "headfile.h"
//#definerow60 //行
//#definerank80//列
#definerowOV7725_H//行
#definerank OV7725_W//列
我用的模块化编程OV7725_H和OV7725_W在其他的头文件已经define 过了,而且头文件已经包含,
可是在编译的时候提示:
Error: identifier "OV7725_H" is undefined D:\摄像头实验\Projecct\USER\inc\CAMERA.h 13
Error: identifier "OV7725_W" is undefined D:\摄像头实验\Projecct\USER\inc\CAMERA.h 13
像下面这样写又不会报错
#definerow60 //行
#definerank80//列
宏定义是预编译指令、只对当前源文件执行文本替换操作?宏指令及预编译阶段根本就不属于编译过程,有名字你叫的“预编译”,就是在编译之前
ba21 发表于 2017-8-31 12:52
宏定义是预编译指令、只对当前源文件执行文本替换操作?宏指令及预编译阶段根本就不属于编译过程,有名字你 ...
那么错误是出在哪里 ?大佬 我是大甲鱼 发表于 2017-8-31 16:13
那么错误是出在哪里 ?大佬
大佬意思就是宏定义只对当前文件生效
只对当前源文件执行文本替换操作 ba21 发表于 2017-8-31 18:03
大佬意思就是宏定义只对当前文件生效
只对当前源文件执行文本替换操作
有没有什么办法可以解决这个问题呢
{:10_243:} 我是大甲鱼 发表于 2017-9-1 08:55
有没有什么办法可以解决这个问题呢
有。期待大神你开发个国产C。 ba21 发表于 2017-9-1 09:43
有。期待大神你开发个国产C。
这就非常难为我了 我是大甲鱼 发表于 2017-9-1 11:06
这就非常难为我了
{:5_106:}看你的了 本帖最后由 windskyy 于 2017-9-1 18:17 编辑
嵌套宏应该是没问题的, 只是由于预处理顺序问题. 使得你的CAMERA.h 文件预处理比headfile.h早 .这样编译器在解析到`OV7725_H`和`OV7725_W`时, 根本没有它们的定义...就会有这样 的报错了.
//比如, 我在test.h中有宏
#define MAX 1024
//在demo.h 中有包括test.h
#include "test.h" // 需要在宏前面..
#define F_MAX MAX
//在源文件mian.c中只
#include "demo.h"
这样编译没有报错....
ps.测试环境.gcc (Debian 6.3.0-18) 6.3.0 20170516 windskyy 发表于 2017-9-1 17:24
嵌套宏应该是没问题的, 只是由于预处理顺序问题. 使得你的CAMERA.h 文件预处理比headfile.h早 .这样编译器 ...
我想到过顺序的问题可是就是无法解决它。最后还是只有用数字代替,但是修改程序就比较麻烦
页:
[1]