欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

C/C++学习笔记之define 用法详解

程序员文章站 2022-05-24 17:57:57
1、简单的define定义 #define width 1920 #define height 1080 width代表1920,height 代表1080 , 编译器在处理这个代码之前会...

1、简单的define定义

#define width 1920

#define height 1080

width代表1920,height 代表1080 ,

编译器在处理这个代码之前会对width 和height 进行替换

2、define的“函数定义”

define可以像函数那样接受一些参数,类似于函数模板
int sum = sum(10, 20)

3、宏的单行定义

在#define中,标准只定义了#和##两种操作。#用来把参数转换成字符串,##则用来连接两个前后两个参数,把它们变成一个字符串。

#define conn(x,y) x##y
#define tochar(x) #@x
#define tostring(x) #x

conn(12, 34) --> 1234

4、define的多行定义

在开发当中,我们可能会大量的写一些重复的,甚至具有“危险”的代码,用宏定义#define,往往可以简化代码。define可以替代多行的代码,例如mfc中的宏定义(非常的经典,虽然让人看了恶心)

#define mydefine(arg1,arg2,...) do {  \

    printf("hello\n");\

    printf("world\n");\

    printf(arg1);\

    printf("\n");\

    printf(arg2);\

    printf("\n");\

}while(0)  

int main(int argc, char const *argv[])

{ mydefine("owen", "chan"); }

5、在大规模的开发过程中,特别是跨平台和的软件里,define最重要的功能是条件编译。

#ifdef windows ...... ......
#endif
#ifdef linux ...... ......
#endif

可以在编译的时候通过#define设置编译环境。

6、如何定义宏、取消宏

#define [macroname] [macrovalue]  //定义宏
#undef [macroname] //取消宏

7. 防止一个头文件被重复包含

由于头文件包含可以嵌套,那么c文件就有可能多次包含同一个头文件,就可能出现重复定义的问题的。

通过条件编译开关来避免重复包含(重复定义)例如

#ifndef __headerfilexxx__
#define __headerfilexxx__ … //文件内容 …
#endif