宏定义应当放置在 ,h 头文件中。 宏名采用大写下划线驼峰风格。 宏定义应该简单而清晰。 给宏添加注释时使用块注释,而不要使用行注释。因为有些编译器可能会把宏后面的行注释理解为宏体的一部分。 对于复杂的、或使用频率较高的重复代码片段,应该使用函数而不是宏。 对于自定义类型,应该使用 typedef 而不是宏。
如这个例子所显示的,带参数的宏经常用来作为一些简单的函数使用。MAX类似一个从两个值中选取较大的值的函数。IS_EVEN则类似于另一种函数,该函数当参数为偶数时返回1,否则返回0。 下面的例子是一个更复杂的宏: 1.#define TOUPPER(c)('a'<=(c)&&(c)<='z'?(c)-'a'+'A':(c)) 这个宏检测一个字符...
第2行为宏定义,形参为 y。第7行宏调用中实参为 a+1,是一个表达式,在宏展开时,用 a+1 代换 y,再用 (y)*(y) 代换 SQ,得到如下语句: sq=(a+1)*(a+1);这与函数的调用是不同的,函数调用时要把实参表达式的值求出来再传递给形参,而宏展开中对实参表达式不作计算,...
defined(GONGCHANG) && !defined(JINGPIN) //编译时既没有定义过GONGCHANG宏也没有定义过JINGPIN宏printf("100%%\n"); //显示普通商店折扣比率#elseprintf("120%%\n"); //显示精品点折扣比率#endifreturn 0;} 三、主函数 1、主函数形式参数 #include <stdio.h>int main(int argc/*后一个参数里的指针个...
大家好!今天我们来学习C语言的函数与宏定义。 首先我们来学习函数的概念。 在C语言中函数可以分为两类,一类是由系统定义的标准函数,这类函数又被称为是库函数,其函数的声明一般是放在系统的include目录下的以.h为后缀的头文件中,如在程序中要用到某个库函数,必须在调用该函数之前用#include<头文件名>命令将库...
1. 宏参数和#define 定义中可以出现其他#define定义的符号。但是对于宏,不能出现递归。 2. 当预处理器搜索#define定义的符号的时候,字符串常量的内容并不被搜索。 七、宏与函数的对比 宏通常被应用于执行简单的运算。 比如在两个数中找出较大的一个时,写成下面的宏,更有优势一些。
因为宏定义只是文本替换,所以预处理的时候,会将所有的 N 替换成 5;,放到源代码中 arr[5;] 这种写法不符合 C 语言语法,所以就会产生报错。 无参宏定义还可以替换表达式,但需要注意的是,表达式需要加上括号,否则就会出现逻辑上的错误。例如:3. 带参宏定义 定义格式:此参数列表和函数中定义的参数列表很...
在C语言中,我们有很多预定义的宏,就是C语言帮程序员预先定义好的宏,可以让我们使用。 宏 说明 __DATE__ 日期:Mmm dd yyyy __TIME__ 时间:hh:mm:ss __LINE__ 当前源文件的代码行号 __FILE__ 文件名 __func__ 函数名/非标准 __FUNC__ 函数名/非标准 ...