MDK 工程宏定义的应用

179 篇文章 181 订阅

这个宏定义是指工程的Options窗口--“C/C++”--“Preprocerssor Symbols”下的宏定义。

在这里宏定义了可以让编译器选择性的编译某些代码。如:

#if defined(LCD_MODEL_AT043)

    #define C_GLCD_H_PULSE          41
    #define C_GLCD_H_FRONT_PORCH    10
    #define C_GLCD_H_BACK_PORCH     10

    #define C_GLCD_V_PULSE          10
    #define C_GLCD_V_FRONT_PORCH    2
    #define C_GLCD_V_BACK_PORCH     2

#elif defined(LCD_MODEL_AT070)

    #define C_GLCD_H_PULSE          20
    #define C_GLCD_H_FRONT_PORCH    210
    #define C_GLCD_H_BACK_PORCH     46

    #define C_GLCD_V_PULSE          10
    #define C_GLCD_V_FRONT_PORCH    22
    #define C_GLCD_V_BACK_PORCH     23

#else

    #define C_GLCD_H_PULSE          20
    #define C_GLCD_H_FRONT_PORCH    250
    #define C_GLCD_H_BACK_PORCH     50

    #define C_GLCD_V_PULSE          5
    #define C_GLCD_V_FRONT_PORCH    5
    #define C_GLCD_V_BACK_PORCH     5

#endif


在上面的代码中,因为在工程的宏定义中定义了LCD_MODEL_AT043,所以只有下面的宏定义会被编译:

    #define C_GLCD_H_PULSE          41
    #define C_GLCD_H_FRONT_PORCH    10
    #define C_GLCD_H_BACK_PORCH     10

    #define C_GLCD_V_PULSE          10
    #define C_GLCD_V_FRONT_PORCH    2
    #define C_GLCD_V_BACK_PORCH     2


这个宏定义的应用场景如:

当你的程序可能会被用于两种液晶屏:4.3寸和7寸,那么你就可以这样做:

在“Manage Project Items”窗口下的“Project Targets”里建两个工程对象(如果你之前只建了一个,那么你直接再添加一个即可)。


这时你回到MDK下就可以看到在下载按钮旁边的下拉框里有两个选项了。


这就是你刚才建立的工程对象。

选中第一个4.3寸的工程对象,在工程宏定义里添加LCD_MODEL_AT043

选中第二个7寸的工程对象,在工程宏定义里添加LCD_MODEL_AT070

这样就完成了。


当你要用4.3寸屏幕程序时,在下拉框里选中4.3寸屏幕的工程对象,宏定义LCD_MODEL_AT043就会生效,只编译你程序里

#if defined(LCD_MODEL_AT043)

    #define C_GLCD_H_PULSE          41
    #define C_GLCD_H_FRONT_PORCH    10
    #define C_GLCD_H_BACK_PORCH     10

    #define C_GLCD_V_PULSE          10
    #define C_GLCD_V_FRONT_PORCH    2
    #define C_GLCD_V_BACK_PORCH     2


的部分。


也可以用这种方式,把调试用的程序和正式版程序分开来,当你调试时需要一些调试信息,那么你就可以用宏定义把它包含起来,如:

#if defined(debug)

  shellSnd("It`s debuging status now!");

#endif





  • 1
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

【ql君】qlexcel

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值