ANSIC 预定义的六种宏ANSIC标准定义了以下6种可供C语言使用的预定义宏: __LINE__在源代码中插入当前源代码行号 __FILE__在源代码中插入当前源代码文件名 __DATE__在源代码中插入当前编译日期〔注意和当前系统日期区别开来〕 __TIME__在源代码中插入当前编译时间〔注意和当前系统时间区别开来〕 __STDC__当...
#include <iostream> using namespace std; __STDC__是预定义宏。当它被定义后,编译器将按照ansic标准来编译你的c程序。 ANSIC标准定义了以下6种可供C语言使用的预定义宏: __LINE__ 在源代码中插入当前源代码行号 __FILE__ 在源代码中插入当前源代码文件名 __DATE__ 在源代码中插入当前编译日期〔注意和...
ANSI C中,有5个预定义的宏。他们总是可以在程序中使用,并且程序员不能对他们进行重新定义。这几个宏名的的前面和后面都是两个下划线字符。 预定义宏 值 __DATE__ 包含当前日期的字符串 __FILE 包含文件名称的字符串 __LING__ 表示当前行号的整数 __STDC__ 如果编译器遵循ASNI标准,它就是非零值 __TIME_...
标准中几个标准预定义宏: __LINE__:在源代码中插入当前源代码行号; __FILE__:在源文件中插入当前源文件名; __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间; __STDC__:当要求程序严格遵循 ANSI C 标准时该标识被赋值为 1; __cplusplus:当编写 C++程序时该标识符被定义...
ANSI C标准预定义宏 __LINE__:在源代码中插入当前源代码行号; __FILE__:在源文件中插入当前源文件名; __DATE__:在源文件中插入当前的编译日期 __TIME__:在源文件中插入当前编译时间; __STDC__:当要求程序严格遵循ANSI C标准时该标识被赋值为1,表明是标准的C程序;...
_TIME_ 表示编译时刻的时间字符串,例如: "12:30:55" _STDC_ 判断该文件是不是定义成标准C 程序 如果编译器不是标准的,则可能仅支持以上宏的一部分,或根本不支持。当然编译器 也有可能还提供其它预定义的宏名。注意:宏名的书写由标识符与两边各二条下划线构成。
2,宏替换 #define //定义某宏 #undef //取消某宏的定义 # //用来标识参数用作字符串 ## //用来连接参数 3,条件包含 #if #else #elif #endif #ifdef #ifndef defined(name)是一个ANSI C中的一个表达式,用做#if的conditional expression,那为什么有了#ifdef,#ifndef还有用defined()呢?原因就在下面。
在ANSI C中编写预ANSI-C "0指针"的方法是使用NULL宏来表示空指针。在ANSI C之前的版本中,0被用作空指针的表示。在ANSI C标准中,NULL宏被引入作为更加可移植和清晰的表示空指针的方式。 要在ANSI C中编写预ANSI-C "0指针",可以使用以下代码: 代码语言:txt 复制 #include <stdio.h> int main() ...
在ANSI C中,预处理器中定义的宏只能传递简单的表达式。在GNU C中,预处理器中定义的宏可以传递任何复杂的表达式。 3、函数参数的类型检查 在ANSI C中,函数参数的类型检查比较严格。如果调用foo函数时传入的参数类型不正确,编译器会报错。 在GNU C中,函数参数的类型检查比较宽松。
GNU C允许使用零长度数组,在定义变长对象的头结构时,这个特性非常有用。例如: struct var_data { int len; char data[0]; }; char data[0]仅仅意味着程序中通过var_data结构体实例的data[index]成员可以访问len之后的第index个地址,它并 没有为data[]数组分配内存,因此sizeof(struct var_data)=sizeof(in...