网站建设举报,wordpress透明菜单,浙江住房和建设网站,公司网站自己可以学习优化吗文章目录 1. 预定义符号2. #define定义常量3. #define定义宏 1. 预定义符号
C语言设置了一些预定义符号#xff0c;可以直接使用#xff0c;预定义符号也是在预处理期间处理的。
__FILE__ //进⾏编译的源⽂件
__LINE__ //⽂件当前的⾏号
__DATE__ //⽂件被编译的⽇期
__TIM… 文章目录 1. 预定义符号2. #define定义常量3. #define定义宏 1. 预定义符号
C语言设置了一些预定义符号可以直接使用预定义符号也是在预处理期间处理的。
__FILE__ //进⾏编译的源⽂件
__LINE__ //⽂件当前的⾏号
__DATE__ //⽂件被编译的⽇期
__TIME__ //⽂件被编译的时间
__STDC__ //如果编译器遵循ANSI C其值为1否则未定义举个例⼦
printf(file:%s line:%d\n, __FILE__, __LINE__);2. #define定义常量
基本语法
#define name stuff举个例⼦
#define MAX 1000
#define reg register //为 register这个关键字创建⼀个简短的名字
#define do_forever for(;;) //⽤更形象的符号来替换⼀种实现
#define CASE break;case //在写case语句的时候⾃动把 break写上。
// 如果定义的 stuff过⻓可以分成⼏⾏写除了最后⼀⾏外每⾏的后⾯都加⼀个反斜杠(续⾏符)。
#define DEBUG_PRINT printf(file:%s\tline:%d\t \date:%s\ttime:%s\n ,\__FILE__,__LINE__ , \__FILE__,__LINE__ , 思考在define定义标识符的时候要不要在最后加上 ; ? ⽐如
#define MAX 1000;
#define MAX 1000建议不要加上 ; ,这样容易导致问题。 ⽐如下⾯的场景
if(condition)max MAX;
elsemax 0;如果是加了分号的情况等替换后if和else之间就是2条语句⽽没有⼤括号的时候if后边只能有⼀条语句。这⾥会出现语法错误。
3. #define定义宏
#define 机制包括了⼀个规定允许把参数替换到⽂本中这种实现通常称为宏macro或定义宏define macro。
下⾯是宏的申明⽅式
#define name( parament-list ) stuff其中的 parament-list 是⼀个由逗号隔开的符号表它们可能出现在stuff中。
注意 参数列表的左括号必须与name紧邻如果两者之间有任何空白存在参数列表就会被解释为stuff的一部分。
举例
#define SQUARE( x ) x * x这个宏接收一个参数x如果在上述声明之后你把SQUARE 5 置于程序中预处理器就会用下面这个表达式替换上面的表达式5 * 5 。
警告 这个宏存在一个问题 观察下面的代码段