缺点:不支持提前退出函数宏;非C的原生语法(GCC支持的statement expression语法,用于将多条语句打包成一个表达式),编译器可能不支持。 附:以下使用({ })方法为一个改写 平方和 函数的案例: // 原函数定义intadd(intx,inty){returnx*x + y*y; }// 宏定义#defineADD(x, y) ({ \ int _x = (x); \...
C语言的多行宏定义 一、多行宏定义的使用 最近在跟STM32L011K4T6低功耗的源代码,发现使用了多行的宏定义来封装函数,记得之前把\给删除掉,编译程序就一直报错。 \是续行操作符,也就是宏定义一行写不完,需要多行写,就需要在每一行的后面加上续行操作符,注意字符\后要紧跟回车键,中间不能有空格或其他字符。
如何在C中定义多行宏定义? 请参阅下面的示例,其中我将交换两个变量的值。 do-while(0)结构很不错 代码语言:javascript 复制 #include<stdio.h>#defineswap(x,y,T)do{\Ttemp=(*x);\(*x)=(*y);\(*y)=temp;\}while(0)intmain(void){int a=5;int b=9;printf("Value of a and b before swa...
关键是要在每一个换行的时候加上一个 "\ " //宏定义写出swap(x,y)交换函数 #define swap(x, y)\ x = x + y;\ y = x - y;\ x = x - y; zigbee里多行define有如下例子 #define FillAndSendTxOptions( TRANSSEQ, ADDR, ID, LEN, TxO ) { \ afStatus_t stat; \ ZDP_TxOptions = (T...
//开启下面的宏表示程序运行在调试版本, 否则为发行版本, 这里假设只有调试版本才输出调试信息 #define _DEBUG #ifdef _DEBUG //开启下面的宏就把调试信息输出到文件,注释即输出到终端 #define DEBUG_TO_FILE #ifdef DEBUG_TO_FILE //调试信息输出到以下文件 ...
// 宏的内容比较长,也没有缩进,易读性较差,因此转为多行 #define ADD(x, y) \ do \ {\ int sum = (x) + (y);\ return sum;\ } while (0) 取消宏定义 如果想要取消对一个宏的定义,可以使用#undef预处理指令,比如要取消之前定义的ADD宏,只要像下面即可 ...
/* 需求: 1.debug模式下: a.如果定义了宏DEBUG_TO_FILE,那么将日志输出到文件 b.如果定义了宏DEBUG_TO_FILE,那么将日志输出到控制台 2.release模式下不打印任何日志 *//***///@Author:猿说编程//@Blog(个人博客地址): www.codersrc.com//@File:C语言教程 - C语言 define 定义函数(多行书写)//@Tim...
C 语言中,注释是帮助自己或别人理解代码的,分为单行注释和多行注释:☞单行注释:// (双斜杠)用...
宏是一种预处理指令,它提供了一种机制,可以用来替换源代码中的字符串。1、条件编译:C语言中,预处理过程读入源代码,检查包含预处理指令的语句和宏定义,并对源代码进行相应的转换,预处理过程还会删除程序中的注释和多余的空白符号。预处理指令是以#开头的代码行,#必须是该行除了空白字符外的第一...
有三种用法,例如替代多行的代码、条件编译,还有典型的宏定义,具体如下:1、define最重要的用法是条件编译 ifdefWINDOWS ...endif ifdefLINUX ...endif 可以在编译的时候通过#define设置编译环境 2、典型的使用方法 使用宏定义我们可以自己根据自己的习惯来定义甚至改变C语言的语法习惯,例如:defineBEGIN...