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