在Makefile中我们可以通过宏定义来控制源程序的编译。只要在Makefile中的CFLAGS中通过选项-D来指定你于定义的宏即可。

如:
CFLAGS += -D _YUQIANG
在编译的时候加上此选项就可以了: $(CC) $(CFLAGS) $^ -o $@

下面是我写的一个测试文件:

例如:

Makefile文件内容为:

CC = gcc
RM = rm

CFLAGS += -D _YUQIANG

TARGETS := myapp

all:$(TARGETS)

$(TARGETS):main.c
$(CC) $(CFLAGS) $^ -o $@

clean:
-$(RM) -f *.o
-$(RM) -f $(TARGETS)

main.c文件的内容为: 
#include <stdio.h>

int main()
{

#ifdef _YUQIANG
printf("Hello Yu Qiang, How are you?/n");
#else
printf("Sorry to lost you. /n");
#endif

return 0;
}

在端口中输入    make clean all
然后输入           ./myapp

结果                  Hello Yu Qiang, How are you?

在Makefile中进行宏定义-D相关推荐

  1. Makefile中用宏定义进行条件编译(gcc -D)/在Makefile中进行宏定义-D

    在源代码里面如果这样是定义的: #ifdef   MACRONAME //可选代码 #endif 那在makefile里面 gcc   -D   MACRONAME=MACRODEF 或者 gcc   ...

  2. 如何在Linux kernel Makefile中添加宏定义

    如何在Linux kernel Makefile中添加宏定义: CFLAGS_object.o += -DMACRO_NAME 在编译object.o时定义宏MACRO_NAME,在kernel中添加 ...

  3. Makefile中传递宏定义字符串给C

    makefile中这样定义一个字符串: USER_CONFIG_APP_KEY ="8193" USER_CONFIG_APP_SECRET ="bad7e97f3c41 ...

  4. Linux 内核中的宏定义

    Linux 内核中的宏定义 rtoax 日期 内核版本:linux-5.10.13 注释版代码:https://github.com/Rtoax/linux-5.10.13 __attribute__ ...

  5. Linux内核源码中使用宏定义的若干技巧

    在C中,宏定义的概念虽然简单,但是真要用好却并不那么容易,下面从Linux源码中抽取一些宏定义的使用方法,希望能从中得到点启发: 1. 类型检查 比如module_init的宏定义: 点击(此处)折叠 ...

  6. NASM汇编程序中的宏定义

    NASM汇编程序中的宏定义 格式如下: %macro 宏名 参数名列表 宏体 %endmacro 如: %macro Descriptor 3 dw %2 & 0FFFFh dw %1 &am ...

  7. 关于gcc扩展中的宏定义中用 # 和 ##

    关于gcc扩展中的宏定义中用 "#" 和 "##" 今天测试了宏定义中的 "#" 和 "##" 的区别. 结果如下: & ...

  8. C++中的内联函数和C中的宏定义的区别

    在C++中内联函数: 内联函数即是在函数的声明和和定义前面加上"inline"关键字,内联函数和常规函数一样,都是按照值来传递参数的,如果参数为表达式,如4.5+7.5,则函数将传 ...

  9. C++中的宏定义详解

    转载自:C++中的宏定义 和 C++宏定义详解 目录 一.#define解析 1 #define命令剖析 1.1   #define的概念 1.2 宏替换发生的时机 1.3 ANSI标准说明了五个预定 ...

最新文章

  1. python多张图片合并拼接,python制作sprite图、雪碧图
  2. 什么是伪静态?SEO中如何理解伪静态?
  3. 认识高清视频编码(MPEG、H.264、WMV-HD、RMVB)
  4. idea中event log_【JavaScript 教程】事件——Event 对象
  5. 动态改变_Excel中如何动态改变可编辑区域?
  6. android x86 arm translator,让x86的android模拟器能模拟arm架构系统
  7. 一条关于swap争用的报警邮件分析(一)
  8. 深入浅出C/C++中的正则表达式库(一)--GNU Regex Library
  9. Android的JNI【实战教程】5⃣️---Android Studio 2.2 以上 NDK开发
  10. win7录屏_这款高清免费无水印的录屏软件,99%的人用过都说好!
  11. ActiveX控件开发流程
  12. LabelImg操作手册
  13. eclipse php使用方法,Eclipse PHPEclipse 配置的具体步骤
  14. 安卓编程用什么软件_STM32用什么软件编程?
  15. ipv6协议学习笔记(1)-ipv6基础
  16. 解决pr调用麦克风的问题
  17. 最简单的输出四位数的每个位上的数字
  18. 大连理工版小学计算机教案,大连理工版小学信息技术教案
  19. 聊聊目标检测中的多尺度检测(Multi-Scale),从YOLO,ssd到FPN,SNIPER,SSD填坑贴和极大极小目标识别
  20. 智能车竞赛技术报告 | 全向行进组 - 东北林业大学- 进取号E

热门文章

  1. Django相关配置(包括数据库、templates、static等)信息—Django2.0
  2. Keras 构建DNN 对用户名检测判断是否为非法用户名(从数据预处理到模型在线预测)...
  3. python基础之字符编码、文件处理
  4. [No000048]程序员的成长过程中,有哪些阶段?
  5. Java字符编码知识简介
  6. 误删除 Oracle 数据库数据的恢复方法
  7. 编码优先级表达的严重性
  8. Eclipse,提交代码,版本比较时,不忽略空格
  9. 警惕分页中的checkbox
  10. Eclipse中Tab的配置(设置为按一下Tab键,效果是按4次空格,而不是4个空格的缩进)