【C语言】宏

宏定义

  • #define<名字><值>
  • 没有结尾的分号
  • 名字必须是一个单词,值可以是任何东西
#define pi 3.1415926
//定义一个宏 pi是这个宏的名字 3.14159是这个宏的值
  • 如果一个宏的值中有其他宏的名字,也会被替换
  • 如果一个宏的值超过一行,最后一行之前的行末要加\
  • 宏的值后面出现的注释不会被当作宏的一部分
  • 没有值的宏#define _DEBUG
#define PI 3.14
#define PI2 2*PI
#define PRT printf("hello"); \
			printf("ok")

int main(){
	printf("%.2f\n",PI); //3.14
	printf("%.2f\n",PI2); //6.28
	PRT; //hello ok
	return 0;
}

预定义的宏

  • __LINE__
  • __FILE__
  • __DATE__
  • __TIME__
  • __STDC__
#include

int main(){
	printf("%s:%d\n",__FILE__,__LINE__); //D:\LYJ\test.cpp:4
	printf("%s,%s\n",__DATE__,__TIME__); //Sep 17 2023,15:16:52
	return 0;
}

带参数的宏

  • 类似于函数的宏#define cube(x) ((x)*(x)*(x))可以带参数
#include
#define cube(x) ((x)*(x)*(x))
//用((x)*(x)*(x))替换cube(x)
int main(){
	printf("%d",cube(2)); //8
	return 0;
}
  • 带参数宏的定义规则:一切都要括号,整个值要括号,参数出现的地方要括号
    #define RAD(X) ((X)*52)
  • 错误的的宏定义:
    #define RAD(x) (x*52) / #define RAD(x) (x)*52

你可能感兴趣的:(C语言,c语言,算法)