这个宏定义将MAX(a, b)替换为((a) > (b) ? (a) : (b)),表示返回a和b中较大的那个数。可以在代码中直接使用MAX(x, y)来实现这个功能,比如: int x = 10; int y = 20; int max_value = MAX(x, y); 宏函数 宏函数是宏定义的另一种常见应用。它可以用来定义一些简单的函数,并且比 C 语言...
int b){if(a>b)returna;elsereturnb;}intmain(void){float a,b,c;a=1.5;b=4.7;c=MAX(a,b);// 展开后:c = (((a)>(b)) ? (a) : (b));printf("c = %d.\n",c);c=max(a,b);// 无法展开,只能调用printf("c = %d.\n",c);return0;}...
#include<iostream>usingnamespacestd;intn;intmain(){// 如果没有定义 MAX 就定义MAX#ifndefMAX#defineMAX 0x3f3f3f3f#endifcout << MAX << endl;// 输出0x3f3f3f3f// 如果没定义DEBUG 就定义DEBUG, 否则将DEBUG重新定义#ifndefDEBUG#defineDEBUG(x) printf ("%d\n", x)#else#defineDEUBG(x) printf...
前言 C语言预处理是C语言编译过程的一个阶段,它在编译之前对源代码进行一系列的处理操作,包括宏替换、文件包含、条件编译等,最终生成经过预处理的代码,然后再进行编译。C语言预处理的主要功能有:1 宏替换:通过使用 #define 定义宏,可以将一段代码或表达式抽象成一个标识符,在编译时将标识符替换成对应的代码...
int x = 10, y = 20; int max_value = MAX(x, y);在这个例子中,当宏被调用时,实际上执行...
int a; int b; }; 3、使用macro批定義變量 #define STR_EACH_DECLARE(macro)\ macro(age)\ macro(name) #define STR_DECLARE(name) char name ## Str; STR_EACH_DECLARE(STR_DECLARE) void main() { int a=1; nameStr='a'; ageStr='b'; ...
intmain() { printf("%s\n",__FILE__); printf("%d\n",__LINE__); printf("%s\n",__DATE__); printf("%s\n",__TIME__); return0; } //上面这段代码是在VS2019这个环境下运行的,__STDC__显示未定义 //说明VS2019不支持ANSI C标准 ...
Macro MAX(100, 98) called: 100 例2模拟函数:判断一个数是不是偶数 #include<stdio.h>#defineIS_EVEN(n) ((n)%2 == 0)intmain(void){inti;i=100;printf("Macro IS_EVEN(%d) called: %d\n",i,IS_EVEN(i));i=97;printf("Macro IS_EVEN(%d) called: %d\n",i,IS_EVEN(i));return0;}...
intint_max(int x,int y){returnx>y?x:y;}floatfloat_max(float x,float y){returnx>yx:y;} 但是这样写起来确实很繁琐,所以我们可以使用宏,去定义一个通用的定义函数模板 代码语言:javascript 复制 #defineGENERIC_MAX(type)\ type type##_max(type x,type y)\{\return(x>y?x:y);\}//GENERIC泛...
除了基本的宏定义和展开,cmacro还支持宏的嵌套和参数化。下面是一个示例来说明这一点: ```c #include<stdio.h> #defineMAX3(a,b,c)(MAX(MAX(a,b),c)) #defineMAX(a,b)((a)>(b)?(a):(b)) intmain(){ intx=10; inty=20; intz=30; intmax=MAX3(x,y,z);//宏展开 ...