要检查 C 或 C 代码中主机的操作系统,我们需要检查编译器(GNU GCC或 G )定义的宏。 例如,在 Windows 平台上,编译器定义了一个名为 _WIN32 的特殊宏。 因此,如果定义了宏 _WIN32,我们就在 Windows 上。 同样,其他操作系统也有编译器定义的特定宏。 C++ 编译器预定义了某些全局标识符,称为manifest constants。
C - 跨平台宏定义 1#ifndef _H_INCLUDED2#define_H_INCLUDED34#include <stdio.h>5#include <stdlib.h>6#include <stdarg.h>7#include <float.h>8#include <string.h>9#include <math.h>10#include <limits.h>11#include <direct.h>1213#defineDEBUG14#defineUSE_WINDOWS1516/***/17#ifdefined(USE_...
当前运行函数宏 main 当前运行函数宏 main 1. 2. 3. 4. 5. 6. linux输出结果 程序最后编译日期宏 May 8 2020 程序最后编译时间宏 11:19:00 当前行数宏 9 当前运行文件名宏 define.cpp 当前运行函数宏 main 当前运行函数宏 main 1. 2. 3. 4. 5. 6. 2 运行平台宏 这些宏主要是判断当前系统运行平...
2. 宏进行定义时不会考虑参数的类型。 3. 参数宏的使用会使具有同一作用的代码块在目标文件中存在多个副本,即会增长目标文件的大小。 4. 参数宏的运行速度会比函数快,因为不需要参数压栈/出栈操作。 5. 函数只在目标文件中存在一处,比较节省程序空间。 6. 函数的调用会牵扯到参数的传递,压栈/出栈操作,速度...
宏是C/C++所支持的一种语言特性,我对它最初的印象就是它可以替换代码中的符号,最常见的例子便是定义一个圆周率PI,之后在代码中使用PI来代替具体圆周率的值。 确实如此,宏提供了一种机制,能够使你在编译期替换代码中的符号或者语句。当你的代码中存在大量相似的、重复的代码时,使用宏可以极大的减少代码量,便于书...
C语言宏C语言宏 1.宏定义: 宏定义又称为宏替换、宏代换,简称“宏”,是C提供的三种预处理功能的其中一种①。其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率。 2.格式: 简单宏定义 格式:#define <宏名/标识符> <字符串> ...
带参的宏 但是宏函数只是简单的文本替换,并不支持参数的类型检查,很容易出现各种各样的BUG,举个司空见惯的例子:#include <stdio.h> #define POW(x) x*x int main(){ int x = 3;printf("%d\n",POW(++x));return 0;} 我们的本意是先将变量x进行自增以后再作为参数带入到宏体,变量x自增后是4...
宏定义的优点和缺点 优点: 1、方便程序的修改: 使用简单宏定义可用宏代替一个在程序中经常使用的常量,这样在将该常量改变时,不用对整个程序进行修改,只修改宏定义的字符串即可,而且当常量比较长时, 我们可以用较短的有意义的标识符来写程序,这样更方便一些(特别当跨平台的时候,要修改程序一些参数的时候,用宏定义...
C/C++跨平台的的预编译宏 我们在编译一些跨平台的程序的时候难免会遇到_WIN32 __linux__什么之类的SDK或者编译器环境预定义的宏。有很多,之前还分不清_WIN32 和WIN32的区别。不过这里还好有个列表,做个备忘。 Please send updates/corrections topredef-contribute....
C语言中常用的宏定义 写好C语言,漂亮的宏定义很重要,使用宏定义可以防止出错,提高可移植性,可读性,方便性等等。下面列举一些成熟软件中常用的宏定义。 1. 防止一个头文件被重复包含 1#ifndefCOMDEF_H2#defineCOMDEF_H3//头文件内容4#endif 2. 重新定义一些类型,防止由于各种平台和编译器的不同,而产生的类型...