__STDC__ 宏指令的意义是编译时定义的。一般来讲,如果__STDC__已经定义,编译器将仅接受不包含任何非标准扩展的标准C/C++代码。如果实现是标准的,则宏__STDC__含有十进制常量1。如果它含有任何其它数,则实现是非标准的。 __cplusplus 与标准c++一致的编译器把它定义为一个包含至少6为的数值。与标准c++不一致...
_ L I N E _及_ F I L E _宏指令在有关# l i n e的部分中已讨论,这里讨论其余的宏名。 _ D AT E _宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。 源代码翻译到目标代码的时间作为串包含在_ T I M E _中。串形式为时:分:秒。 如果实现是标准的,则宏_ S T D C _...
#define是C语言中最常用的宏定义指令之一,用于定义一个宏。它的基本语法为: #define 宏名 替换文本 宏名可以是任意合法的标识符,替换文本可以是任意合法的C代码。当程序中出现宏名时,预处理器会将其替换为相应的文本。 2. #ifdef / #ifndef / #endif 这三个宏定义指令用于条件编译。#ifdef用于检查一个宏是...
C 语言中也提供一种预处理指令,#undef。它的其中一个功能就是删除前面定义过的宏,解放标识符。由此可以知道,宏定义的作用域是从定义开始,直到遇到 #undef 指令,或者程序运行完毕时才结束。而在作用域中,就不能再使用宏定义中的标识符。5. 宏定义和函数的区别 学到目前,已经知道了 C 语言当中带参数的有...
C语言中常用宏定义 下面是一些比较重要的宏定义,记录一下: assert断言: #define assert(cond) ((cond)?(void)0:_assert(#cond,__FILE__,__LINE__)) void _assert(char*cond,char*filename,long lineno) { printf("assert:%s in file:%s, at line:%d\n",cond,filename,lineno);...
C语言中的宏定义是最常用的组成部分之一,他们在编程时有重要作用,正确应用可以减少很多代码工作量,但是使用过渡,则会造成可读性降低。对于宏定义,需要注意以下说明: (1)宏名一般用大写; (2)使用宏可以提高程序的通用性和易读性,减少不一致性,减少输入错误和便于修改; ...
C语言宏定义(常用宏定义),常用宏定义数值相关的宏定义 闰年的判断,年份可以整除4并且不能整除100,或者可以整除400,则为闰年;#defineIS_LEAP_YEAR(y)(((y)%4)==0)&&(((y)%100)!=0)) \ ||(((y)%400)==0))/*判断是否是闰年*/ 1
这个指令是gcc引入的,作用是"允许程序员将最有可能执行的分支告诉编译器"。这个指令的写法为:__builtin_expect(EXP, N)。意思是:EXP==N的概率很大。一般的使用方法是将__builtin_expect指令封装为LIKELY和UNLIKELY宏。 四、C语言中常用的预定义 __LINE__:当前程序行的行号,表示为十进制整型常量 ...
在C语言源程序中,允许用一个标识符表示一个字符串,称为“宏”;被定义为宏的标识符称为“宏名”。 宏定义是由源程序中的宏定义命令完成的。该命令有两种形式:一种是无参数的宏定义;另外一种是带参数的宏定义。 (一)无参数的宏定义 无参数宏的宏名后不带参数。其定义的一般形式为: #define标识符字符串 ...
「单片机一些C语言常用宏定义」2014-1-9 18:42:18 一些实用的宏示例 求最大值和最小值 #define MAX(x,y)(((x)>(y))?(x):(y)) #define MIN(x,y)(((x)<(y))?(x):(y)) 高低字节操作(可以不用&0xFF,类型为自定义类型) #define HI_BYTE(n)(UINT8)((n>>8)&0xFF) #define LO_BYTE...