当前位置:首页 » 编程软件 » 编译宏宏

编译宏宏

发布时间: 2024-08-28 01:22:06

1. 编译器预定义的宏(可以用来区分使用的是哪种编译器) 详细�0�3

1、_MSC_VER 是微软C/C++编译器——cl.exe 编译代码时预定义的一个宏。需 要针对cl 编写代码时, 可以使用该宏进行条件编译。 2、_MSC_VER 的值表示cl 的版本。需要针对cl 特定版本编写代码时, 也可以使用 该宏进行条件编译。 3、_MSC_VER 的类型是"int",具体版本号定义如下: MS VC++ 9.0 _MSC_VER = 1500 MS VC++ 8.0 _MSC_VER = 1400 MS VC++ 7.1 _MSC_VER = 1310 MS VC++ 7.0 _MSC_VER = 1300 MS VC++ 6.0 _MSC_VER = 1200 MS VC++ 5.0 _MSC_VER = 1100 其中MS VC++ 9.0 就是Visual C++ 2008,MS VC++ 8.0 就是Visual C++2005。 二、介绍预定义宏“__GNUC__” 1、__GNUC__ 是gcc 编译器编译代码时预定义的一个宏。需要针对gcc 编写代码时, 可以使用该宏进行条件编译。 2、__GNUC__ 的值表示gcc 的版本。需要针对gcc 特定版本编写代码时,也可以使 用该宏进行条件编译。 3、__GNUC__ 的类型是“int” 三、预定义宏"__MINGW32__" 1、MinGW编译器 四、symbian sdk 预定义宏: symbian 平台,定义"__SYMBIAN32_" 3rd MR 版及之前的那个3rd 版本,定义"__SERIES60_30__" 3rd FP1 版,定义"__SERIES60_31__" 3rd FP2 版,定义"__SERIES60_32__" 另外,还有一个"__SERIES60_3x__"。若不需区分具体是哪一个3rd 版,则用之。

2. 宏和函数的区别以及C语言的编译链接过程

  1. 宏在编译之前,需要进行预处理,将宏直接提换成宏定义的代码,是直接替换,也就是说,在预处理之后,你再看代码,发现宏定义已经被替换过来了,你看到是你定义之后的那一串代码。

    而函数,在编译之后,有一系列调用函数的过程,比如,传参,压栈等,这部分是编译器所做的。

  2. C 语言编译链接过程:

    test.c(原始代码) --> 预处理 --> test.i(经过预处理的)--> 编译 --> test.s(汇编代码)--> 汇编 --> test.o(目标文件,其实这部分已经是单个文件的完整二进制文件了,只是还不能执行,如果不懂这句话,可以再问我,其实这部分知识,平时也很少遇到) --> 链接 --> test (可执行文件,比如一个程序由3个代码文件共同生成,那么就会有3个.o格式目标文件,链接是把多个目标文件真正的联系在一起,比如a.o 中使用了 b.o中的一个函数,那么它们两个之间的地址是如何确定的(同理,可引申到使用函数库的问题,使用printf函数,也是需要链接器进行确定printf函数地址,才能知道如何调用。)这个就是链接器的作用)

3. EXCEl宏运行编译错误是怎么回事

这是隐藏程序的VBA代码执行出错。解决方法:

1)在Excel中按 Alt+F11 打开宏编辑器;



2)在宏编辑器中按 Ctrl+R 打开 工程资源管理面板(如果已打开,按 Ctrl+R 后不会有任何变化);


3)在工程资源管理面板中找到你的那个文件,点开,检查是否存在“模块n”(n为1、2……),在这些模块上逐个点右键,“移除模块n”。


4)最后保存,即可。

4. 如何在C语言中用宏来判断当前编译器

热心网友
一.
#define是C语言中提供的宏定义命令,其主要目的是为程序员在编程时提供一定的方便,并能在一定程度上提高程序的运行效率,但学生在学习时往往不能理解该命令的本质,总是在此处产生一些困惑,在编程时误用该命令,使得程序的运行与预期的目的不一致,或者在读别人写的程序时,把运行结果理解错误,这对 C语言的学习很不利。
1#define命令剖析
1.1 #define的概念
#define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本。
该命令有两种格式:一种是简单的宏定义,另一种是带参数的宏定义。
(1) 简单的宏定义:
#define <宏名><字符串>
例: #define PI 3.1415926
(2) 带参数的宏定义
#define <宏名> (<参数表>) <宏体>
例: #define A(x) x
一个标识符被宏定义后,该标识符便是一个宏名。这时,在程序中出现的是宏名,在该程序被编译前,先将宏名用被定义的字符串替换,这称为宏替换,替换后才进行编译,宏替换是简单的替换。
1.2 宏替换发生的时机
为了能够真正理解#define的作用,让我们来了解一下对C语言源程序的处理过程。当我们在一个集成的开发环境如Turbo C中将编写好的源程序进行编译时,实际经过了预处理、编译、汇编和连接几个过程,见图1。

热点内容
Python对比matlab 发布:2024-11-25 07:45:58 浏览:306
ovt机顶盒管理员密码多少 发布:2024-11-25 07:45:58 浏览:376
win10与linux双系统 发布:2024-11-25 07:40:05 浏览:657
网易我的世界4d皮肤服务器 发布:2024-11-25 07:38:36 浏览:943
传奇结义脚本 发布:2024-11-25 07:31:25 浏览:661
linuxpppd 发布:2024-11-25 07:29:54 浏览:293
海宇加密 发布:2024-11-25 07:24:03 浏览:801
手机通话降噪功能安卓在哪里设置 发布:2024-11-25 07:21:03 浏览:117
c基础java 发布:2024-11-25 07:20:50 浏览:70
罪恶都市安卓内置菜单在哪里下载 发布:2024-11-25 07:09:51 浏览:706