如果实现是标准的,则宏_ S T D C _含有十进制常量1。如果它含有任何其它数,则实现是非标准的。 可以定义宏,例如: 当定义了_DEBUG,输出数据信息和所在文件所在行: #ifdef _DEBUG #define DEBUGMSG(msg,date) printf(msg);printf(“%d%d%d”,date,_LINE_,_FILE_) #else #define DEBUGMSG(msg,date) #...
宏定义在C语言源程序中允许用一个标识符来表示一个字符串,称为“宏”,被定义为“宏”的标识符称为“宏名”. 如: 代码语言:javascript 代码运行次数:0 复制 Cloud Studio代码运行 #define 梅西 Lionel Andrés Messi Cuccitini 以上就是一个宏定义,该定义是用"梅西"来表示"Lionel Andrés Messi Cuccitini" 其...
2、带参数的宏( function-like宏) #define ADD(x, y) x + y ADD(1,2) // -> 1 +2 标准定义格式如下 // obj-like #define 宏名 替换列表 换行符 //func-like #define 宏名 ([标识符列表]) 替换列表 换行符 3、宏定义以换行符结尾,这就意味着一个宏定义不论多长都只能写在一行中,如果要分...
宏定义可以包含两个运算符:#和##。编译器不会识别这两种运算符相反,它们会在预处理时被执行。 #运算符将一个宏的参数转换为字符串字面量(字符串字面量(string literal)是指双引号引住的一系列字符,双引号中可以没有字符,可以只有一个字符,也可以有很多个字符),, 简单说就是在对它所引用的宏变量通过替换后...
写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用的宏定义。 1. 防止一个头文件被重复包含 1#ifndef COMDEF_H 2#define COMDEF_H 3//头文件内容 4#endif 2. 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型字节数差异,方...
C语言编译器提供了一些预定义宏,可用于条件编译。比如: `__STDC__`:若编译器遵循ANSI C标准,这个宏会被定义。 `__FILE__`:表示当前源文件的名称。 `__LINE__`:表示当前代码所在的行号。 示例代码如下: include. int main() { // 判断是否遵循ANSI C标准。 ifdef __STDC__ printf("This compiler con...
上面的定义可以看出,__THROW宏定义只在GCC下有效,观察#ifdef __GNUC__部分,可以看出,在一般C环境中此宏是没有意义的;在GNUC版本高于3.2时,库用函数属性将C函数标记为__nothrow__;而如果代码定义了__cplusplus则表示为C++代码,且GNUC版本为2.8.x,此时才有意思,为C++程序加入throw()以优化函数调用。
C语言宏定义详解转自:原作者不详1,防止一个头文件被重复包含 ifndef160;COMDEFH define160;COMDEFH 160;160;头文件内容 endif 2,重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型
今天聊一道C语言关于宏定义的笔试题:“写一个"标准"宏MIN ,这个宏输入两个参数并返回较小的一个。” 聊一聊 这道题考察的是 C 语言宏定义的知识。我们很容易会想到下边的答案: #define MIN(a,b) ((a) < (b) ? (a) : (b)) 宏定义会在编译的时候进行替换展开。最好将宏中的参数用括号括起来。