在头文件中应用MDK预编译器有何注意事项?

2026-04-28 01:530阅读0评论SEO资讯
  • 内容介绍
  • 文章标签
  • 相关推荐

本文共计346个文字,预计阅读时间需要2分钟。

在头文件中应用MDK预编译器有何注意事项?

问题:在头文件中使用预编译编译时,会出现无效的对象+在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又是未定义的。

阅读全文

本文共计346个文字,预计阅读时间需要2分钟。

在头文件中应用MDK预编译器有何注意事项?

问题:在头文件中使用预编译编译时,会出现无效的对象+在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又是未定义的。

阅读全文