Unix/C/C++--宏

1 简介

  • 简单的宏定义:
    #define <宏名>  <字符串>
    例: #define PI 3.1415926
  • 带参数的宏定义
    #define <宏名> (<参数表>) <宏体>
    例: #define A(x) x

2 一般应用

3 高级应用

3.1 功能宏开关模块

3.1.1 实现

  • 通过在Makefile、Qt pro、头文件中,实现添加宏来控制模块。
  • Qt 中使用QObject,让类继承信号与槽的功能。
  • github中的easyloggingpp,使用宏控制该log功能
  • github中libsigc++,使用SIGC_API宏来控制该信号与槽模块
  • 如下,便是libsigc++的代码模块,在移植过程中,可根据功能宏快速的将功能模块代码进行提取和分离。能开关功能模块。
struct SIGC_API notifiable
{
  using func_destroy_notify = internal::func_destroy_notify;
};

3.1.2 优点

  • 方便移植
    在移植过程中,可根据功能宏快速的将功能模块代码进行提取和分离。
  • 增强可扩展性
    可通过宏的开启和关闭来控制此功能开启和关闭,增强了平台的可配置性、可扩展性。
  • 快速定位问题
    在软件的运行或测试过程中,往往会出现各种问题,如果怀疑某一模块有问题,可将此功能模块关闭,如果问题消失,则说明问题就在此模块,否则可排除此模块。
  • 提高开发效率
    如果未使用功能宏控制时,如果不要此功能时,则需要对代码进行修改、删除等操作,但之后有需要此功能时,又得重新去修改、增加相应的代码。而一旦有功能宏控制,只需将对应的宏开启或关闭就能达到想要的目的,而不用对代码进行任何的修改。

3.2 使用一些宏跟踪调试

ANSI标准说明了五个预定义的宏名。它们是:

_LINE_ /*(两个下划线),对应%d*/
_FILE_ /*对应%s*/
_DATE_ /*对应%s*/
_TIME_ /*对应%s*/

参考

1、C++宏定义详解
2、功能宏开关模块的实现[C语言]

展开阅读全文
©️2019 CSDN 皮肤主题: 技术黑板 设计师: CSDN官方博客
应支付0元
点击重新获取
扫码支付

支付成功即可阅读