宏函数 CPP 一个强大的功能是可以使用参数化的宏来模拟函数,这里应用了 CPP 的 “字符串常量化运算符”,格式如下: #define <宏名>(<参数列表>) <宏体> 示例: // 函数 int square(int x) { return x * x; } // 带参数的宏定义 #define square(x) ((x) * (x)) 示例: ...
C语言的宏文本替换,是通过预处理指令define实现的,#define的使用场景主要有:1)直接使用标识符不定义具体常量的标识符用法 2)替换常量的对象式宏(Object-like macros)3)模拟函数功能的函数式宏(Function-like macros)4)替换文中支持可变的参数数量的可变参宏 5)#和##运算法的用法等。define 标识符 当用...
#define命令是C语言中的一个宏定义命令,它用来讲一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。该命令有两种格式:一种是简单的宏定义(不带参数的宏定义),另一种是带参数的宏定义。 (1) 简单的宏定义 格式:#define <宏名/标识符> <字符串> eg:#define PI 3.1415926 说明...
宏是通过`#define`指令来定义的。其基本语法如下:#define 宏名 替换文本 或者,对于带参数的宏(类似于函数),语法如下:#define 宏名(参数列表) 替换文本 示例 1. 定义常量宏 #define PI 3.14159 这里,`PI`是一个宏,它在预处理阶段会被替换为`3.14159`。2. 定义带参数的宏 #define SQUARE(x) ((...
C语言中,函数名称和宏名称可以相同。可以参考下面的示例程序。 ///test.cpp #include <stdio.h> void print(int value) { printf("%d\n", value); } #define print(x) printf("hello"); \ print(x) int main() { print(23); return 0; } 上面的程序...
Function-like 宏 也可定义出使用时像是方法调用一样的宏,这便是 Function-like 类型的宏。 #definelang_init() c_init()lang_init() // 编译后 c_init() 函数类型的宏只在以方法调用形式使用时才会被展开,即名称后加括号,否则会被忽略。当宏名和函数名重名时,这一策略就会显得有用了,比如: ...
参考这里Concatenation#include//宏定义#defineGET_NAME(x)#xvoidfun0(){;}intmain(){//获取name==...
你可以定义具有形式参数(简称“形参”)的宏。当预处理器展开这类宏时,它先使用调用宏时指定的实际参数(简称“实参”)取代替换文本中对应的形参。带有形参的宏通常也称为类函数宏(function-like macro)。 可以使用下面两种方式定义带有参数的宏: #define 宏名称( [形参列表] ) 替换文本 ...
首先我们的宏在编译阶段会直接和代码替换本次的宏就将printf函数内容进行了替换使SQUARE(3+2)替换成了3+2*3+2这样我们就得到了11的值。 所以使用宏的时候一定要加括号!加括号! #include<stdio.h> #define SQUARE(x) ((x) * (x)) ...
假如希望在字符串中包含宏参数,ANSIC允许这样作,在类函数宏的替换部分,#符号用作一个预处理运算符,它可以把语言符号转化程字符串。例如,如果x是一个宏参量,那么#x可以把参数名转化成相应的字符串。该过程称为字符串化(stringizing)。 #incldue #define PSQR(x) printf("the square of" #x "is %d.\n"...