在头文件中应用MDK预编译器有何注意事项?
- 内容介绍
- 文章标签
- 相关推荐
本文共计346个文字,预计阅读时间需要2分钟。
问题:在头文件中使用预编译编译时,会出现无效的对象+在a.h文件中定义了AAA_TEST,如下所示+
问题:在头文件中使用预编译时,会出现无效的现象在a.h文件中定义了宏AA_TEST,如下所示
#ifndef __A_H
#define __A_H
#define AA_TEST
#endif
在b.h文件中定义了宏BB_TEST,如下所示
#ifndef __B_H
#define __B_H
#include "a.h"
#if defined(AA_TEST)
#define BB_TEST
#endif
#endif
在c.c文件中的代码如下所示
#include "b.h"
#ifdef BB_TEST
const char *name;
#endif
现象:
编译后会发现name变量未编译,原因是b.h文件中的#define BB_TEST宏,未编译导致的。如下图所示:
从上图可知,在b.h文件中宏BB_TEST是已经编译了的,但是在c.c文件中的宏BB_TEST又是未定义的。
我琢磨了很久,依然没有找到有效的办法,有知道的大佬可否告知一下,当然后期我发现解决办法后,也会修改笔记进行分享的。
目前我零时处理的方式:将a.h文件中的宏AA_TEST放在b.h文件中进行定义,虽然这样不是很友好,但是目前只能将就了。
如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除。同时本人深表歉意,并致以崇高的谢意! computer_wx@foxmail.com本文共计346个文字,预计阅读时间需要2分钟。
问题:在头文件中使用预编译编译时,会出现无效的对象+在a.h文件中定义了AAA_TEST,如下所示+
问题:在头文件中使用预编译时,会出现无效的现象在a.h文件中定义了宏AA_TEST,如下所示
#ifndef __A_H
#define __A_H
#define AA_TEST
#endif
在b.h文件中定义了宏BB_TEST,如下所示
#ifndef __B_H
#define __B_H
#include "a.h"
#if defined(AA_TEST)
#define BB_TEST
#endif
#endif
在c.c文件中的代码如下所示
#include "b.h"
#ifdef BB_TEST
const char *name;
#endif
现象:
编译后会发现name变量未编译,原因是b.h文件中的#define BB_TEST宏,未编译导致的。如下图所示:
从上图可知,在b.h文件中宏BB_TEST是已经编译了的,但是在c.c文件中的宏BB_TEST又是未定义的。
我琢磨了很久,依然没有找到有效的办法,有知道的大佬可否告知一下,当然后期我发现解决办法后,也会修改笔记进行分享的。
目前我零时处理的方式:将a.h文件中的宏AA_TEST放在b.h文件中进行定义,虽然这样不是很友好,但是目前只能将就了。
如本博客的内容侵犯了你的权益,请与以下地址联系,本人获知后,马上删除。同时本人深表歉意,并致以崇高的谢意! computer_wx@foxmail.com
