0
点赞
收藏
分享

微信扫一扫

c语言预处理

圣杰 2022-04-16 阅读 93
c语言

预处理


详解:C语言程序的编译+链接

预定义符号介绍

__FILE__进行编译的源文件
__LINE__文件当前的行号
__DATE__文件被编译的日期
__TIME__文件被编译的时间
__STDC__如果编译器遵循ANSI C,其值为1,否则未定义

例:

#include <stdio.h>
int main()
{
	printf("%s %d %s %s\n", __FILE__, __LINE__, __DATE__, __TIME__);
	return 0;
}

运行结果:
在这里插入图片描述

预处理指令 #define

#define定义标识符

#define MAX 100
#define PRINT printf("hahaha\n")
int main()
{
	printf("%d\n", MAX);
	PRINT;
	return 0;
}

#define定义的宏

例如:

#define MAX(x,y) x>y?x:y
int main()
{
	printf("%d\n", MAX(1, 3));
	return 0;
}
#define mul(x,y) x*y
int mian()
{
	mul(2,2+3);
	return 0;
}

#define的使用规则

宏和函数的对比

函数
代码插入到程序中,会使代码的长度变长每次使用,只需要调用即可
执行速度快有函数调用和返回的开销
存在优先级的问题,结果可能不是我们想要的不存在这个问题
参数与类型无关参数与类型有关
不能调试可以调试
不能递归可以递归

预处理操作符#和##的介绍

#define print(a) printf(#a" is %d\n",a)
int main()
{
	int a = 6;
	int b = 0;
	print(a);
	print(b);
	return 0;
}

在这里插入图片描述

#define line(x,y) x##y
int main()
{
	int ac = 20;
	printf("%d\n", line(a, c));
	return 0;
}

预处理指令 #include

预处理指令 #undef

条件编译

常见的条件编译

#if+常量表达式
#endif

#if+常量表达式
#elif+常量表达式
#else+常量表达式
#endif

判断是否被定义
1.#if defined(符号)
2.#if !defined(符号)
3.#ifdef 符号
4.#ifndef 符号

#ifndef 符号
#define 符号
//.....
#endif

#pragma once

例:

#define add(x,y) x+y
#define A 
int main()
{
#if defined(A)
	printf("%d\n", add(1, 2));
#endif

#ifdef A
	printf("%d\n", add(1, 2));
#endif
	return 0;
}
举报

相关推荐

0 条评论