1 内置的宏定义 这些宏在代码中可直接调用。 示例代码 cout << "程序最后编译日期宏 " << __DATE__ << endl; cout << "程序最后编译时间宏 " << __TIME__ << endl; cout << "当前行数宏 " << __LINE__ << endl; cout << "当前运行文件名宏 " << __FILE__ << endl; cout << "...
1 内置的宏定义 这些宏在代码中可直接调用。 示例代码 cout << "程序最后编译日期宏 " << __DATE__ << endl; cout << "程序最后编译时间宏 " << __TIME__ << endl; cout << "当前行数宏 " << __LINE__ << endl; cout << "当前运行文件名宏 " << __FILE__ << endl; cout << "...
仿对象宏(object-like)以”替代文本“替换每次出现的被定义的宏名,也称之为无参数宏。代表值的宏称之为:类对象宏; 无参数宏形如: #define MACRO 1234 // 常见用法 #define LIMIT 1000 // 常见用法 #define GOOD // 空宏 直接宏替换,将宏的简单替换,展现淋漓尽致,也是宏的性质之一; 2.4 带参数的宏 仿...
上面是截取了一段自动生成的头文件代码,左侧是原始的 Swift 代码,右侧是自动生成的 Objective-C 代码,我们可以看到在 Objective-C 的类中,有一个名为SWIFT_CLASS的宏,将 Swift 与 Objective-C 中的两个类进行了关联。 如果你稍加注意,就会发现关联的一段乱码中还绑定了当前的组件名(PetWall),这样做的目的是...
而宏函数则不存在上述问题,宏函数在预编译时,同函数定义的代码来替换函数名,将函数代码段嵌入到当前程序,不会产生函数调用。所以会省去普通函数保留现场恢复现场的时间,但因为要将定义的函数体嵌入到当前程序,所以不可避免的会占用额外的存储空间。在频繁调用同一个宏的时候,该现象尤其明显。宏函数...
_LINE_ 及 _FILE_ 宏指示,#line指令可以改变它的值,简单的讲,编译时,它们包含程序的当前行数和文件名。_DATE_ 宏指令含有形式为月/日/年的串,表示源文件被翻译到代码时的日期。_TIME_ 宏指令包含程序编译的时间。时间用字符串表示,其形式为: 分:秒_STDC_ 宏指令的意义是编译时定义的。一般来讲,如果_...
行号和文件名指令 #line__LINE___FILE__c语言把一些重要的环境变量、系统常量,用符号常量的形式进行封装,这样我们只需要使用定义好的宏名,就可以方便的获取系统环境的数据。比如__FILE__就表示当前源文件的绝对文件名(包含绝对路径和完整文件名)。形如”C:\PATH\FILE.EXT”就是绝对文件名,”C:\PATH”就...
平时开发C语言程序时,经常需要调试代码,C语言有一些宏,可以打印出当前的行号、文件名称、日期、时间,对程序的调试起到很大的帮助,可以快速定位问题。特别是开发单片机程序时,使用这些宏打印这些信息或者在LCD上显示程序的编译日期、时间,可以知道这个单片机上的固件是什么时候编译。帮助判断版本。
__builtin_FILE()是一个内建函数,不同于__FILE__是一个预定义宏,因此__builtin_FILE()的效率可能更高。 使用__BASE_FILE__宏 与__FILE__宏和__builtin_FILE()函数功能类似,它只包含当前编译单元的文件名,不包含任何路径信息(理论上是这样,实际往往跟__FILE__内容一致)。
(void);// 测试函数1:交换a,b的值voidtest2(void);// 测试函数2:C语言预定义宏voidtest3(void);// 测试函数3:C89与C99标准的区别voidtest4(void);// 测试函数4:输出当前编译器数据类型范围// 菜单intmenu(void);/*=== 主函数 ===*/intmain(void){...