我是靠谱客的博主 虚心老鼠,最近开发中收集的这篇文章主要介绍gcc -D选项,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

D选项
  D选项是用来在使用gcc/g++编译的时候定义宏的。

gcc -DDEBUG -D 后面直接跟宏命,相当于定义这个宏,默认这个宏的内容是1
gcc -DNAME=Peter -D 后面跟 key=value 表示定义key这个宏,它的内容是value
常用场景
-DDEBUG 定义DEBUG宏,可能文件中有DEBUG宏部分的相关信息,用个DDEBUG来选择开启或关闭DEBUG
-Dprivate=public -Dprotected=public 通常用于测试环境,把private 与 protected全替换为public 的。这个还是很常用的,比如我们使用gtest去单元测试,直接测试目标类的成员函数,但是可能目标类的成员函数为了封装性,它可能是protected,所以我们使用这个宏把它全变成public

项目中的应用:

项目需要判断是否使用海思的内存处理函数, 使用海思的话会将诸如memcpy,memset之类的函数重新define成海思自己的实现函数, 该重定义过程我们在一个专门的.h文件 hi_mem.h中进行.

由于memcpy等函数使用场景众多, 不同点C都可能使用, 但又无法保证哪个C文件先执行, 因此保险的做法是每个C文件都包含 hi_mem.h, 而是否需要包含又取决于是否使用海思的芯片.

因此, 我们在makefile文件中使用D选项将是否使用海思芯片的信息传给程序,避免多个C文件的修改:

C_FLAGS += -DSUPPORT_HISI_MEM

而在程序中判断该变量判断是否需要包含 hi_mem.h

#ifdef SUPPORT_HISI_MEM
#include "hi_mem.h"
#endif



原文链接:gcc -D 选项_我喜欢雨天的清新的博客-CSDN博客_-d gcc

最后

以上就是虚心老鼠为你收集整理的gcc -D选项的全部内容,希望文章能够帮你解决gcc -D选项所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(63)

评论列表共有 0 条评论

立即
投稿
返回
顶部