C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。带参宏定义的一般形式为:#define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。带参宏调用的一般形式为:宏名...
1、简单宏定义: #define 宏名 字符串 #define π 3.1415926 2、带参宏定义:#define 宏名(参数表) 宏体 #define area(x) x*x #define A(x) x//若遇Max(a,b),则替换a>b?a:b 用来将一个标识符定义为字符串。若一个标识符被宏定义后即为宏名,程序中只出现宏名,先将宏名用被定义的字符串替代(...
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中可以含有各个形参。 带参宏调用的一般形式为: ...
#是“字符串化”的意思。出现在宏定义中的#是把跟在后面的参数转换成一个字符串 #define PSQR(x) printf("the square of" #x "is %d.\n",(x)*(x))int main(void){int y = 4;PSQR(y);PSQR(2 + 4);system("pause");return 0;}运行结果:the square ofyis 16.the square of2 + 4is 36...
它们用于表示C++中的字符串常量,并存储在只读数据段中。字符串字面值在编译时被处理,并转换为const char[]类型的字符数组或指向该数组的指针(在C++11及以后的版本中,通常转换为const char*类型的右值引用)。 字符串字面值的主要用途包括: · 初始化字符数组或字符指针。 · 作为函数的参数传递字符串数据。 · ...
ios 宏定义传字符串参数 宏名定义字符串 宏定义#define 叫做宏定义命令,它也是C语言预处理命令的一种。所谓宏定义,就是用一个标识符来表示一个字符串,如果在后面的代码中出现了该标识符,那么就全部替换成指定的字符串。宏定义是由源程序中的宏定义命令#define完成的,宏替换是由预处理程序完成的。宏定义的一般...
C语言允许宏带有参数。在宏定义中的参数称为“形式参数”,在宏调用中的参数称为“实际参数”,这点和函数有些类似。 对带参数的宏,在展开过程中不仅要进行字符串替换,还要用实参去替换形参。(个人:也就是要进行两个替换,一个是用实参去替换形参,另一个进行宏展开) 带
C语言允许宏带有参数。在宏定义中的参数称为形式参数,在宏调用中的参数称为实际参数,这点和函数有些类似。 对带参数的宏,在调用中,不仅要宏展开,而且要用实参去代换形参。 带参宏定义的一般形式为: #define 宏名(形参列表) 字符串 在字符串中含有各个形参。
我们的目标是希望使用宏的时候将宏体中的x替换为宏参数,但是第一个宏定义是不能完成这样的目标的,因为引号中的x会被看做是普通文本,不可替换;我们可以采用#运算符来实现这样的功能。 PSQR(x)在两个不同的宏定义输出的结果如下: The square of x is 4. ...