导航:首页 > 源码编译 > c语言宏编译

c语言宏编译

发布时间:2022-01-11 17:51:50

‘壹’ c语言中 关于预处理和宏替换是否编译编译

宏不会被compiler直接作为代码编译,你可以把它理解为一种编译器处理源代码的方式,比如#define CONST_NUM 10这样,后面代码里所有用CONST_NUM的地方都会在编译时被替换成10这个数,预处理呢,根据你定义的不同宏,比如定义了DEBUG,后面有两大段代码,
#ifdef DEBUG
XXX
#else
XXX
#endif
控制编译器具体去编译代码文件里的那部分代码这样,个人理解,希望能对你有些帮助。

‘贰’ 如何在C语言中用宏来判断当前编译器

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 版,则用之。

‘叁’ c语言的宏

肯定是7了
MAX( a + b, c + d ) * 100 替换后得
(5+2) > (3+3) ? (5+2) : (3+3) * 100 // 注意前面没括号,因此是:
7 > 6 ? 7 : 600,因此返回的就是7,如果要返回700必须这样写
#define MAX( x, y ) ((x) > (y) ? (x) : (y))

‘肆’ c语言,说宏展开是在编译时进行的,啥意思啥叫编译时进行的

c语言编写出来的代码叫源代码,是供人看的,如果想让机器执行,需要转换成机器语言,这个转换过程就叫编译。
在c语言中定义的宏,在编译时,会展开(或叫替换)为实际的语句,如:
#define MAX 100
void main()
{
int a=MAX ;
printf("a=%d\n", a );
}
这里MAX是个宏,当编译时,这段代码就会变成:
void main()
{
int a=100; //这里的MAX会变成100
printf("a=%d\n", a );
}
这就是宏展开、宏替换,然后编译器,按这样子的源代码进行编译,生成执行程序

‘伍’ C语言宏定义 用条件编译

条件
编译以及所有前面带“#”的语句,是在编译
阶段
执行的语句,不会生成
运行时

代码
。而你的y是在运行时才进行赋值的,所以是无法用条件编译来实现的。
直接写成条件语句就行:
{
if
R
printf("%d是闰年\n",y);
else
printf("%d不是闰年\n",y);
}

‘陆’ c语言中怎么用命令提示窗口编译宏定义并打印出来!请指教.谢谢了.

安装 Visual Studio 后在开始菜单里找 Microsoft Visual C++ 命令提示符,打开后,用微软的编译器 cl 编译,不是 cpp。

‘柒’ C语言宏定义编译报错

你把struct student用括号括起来试试,即:
#define STU (struct student)

‘捌’ C语言 宏

难道3不能是字符串吗?

"3*pi"是字符串,"3"是它的子串。
"3*pi"宏展开后为"3*3.1415926"也是字符串,整个源程序都被认为字符串!

现在,还有有编译,编译时,编译器会把3*3.1415926当表达式计算,用结果再替换一次!

‘玖’ 宏和函数的区别以及C语言的编译链接过程

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

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

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

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

‘拾’ 在C语言中 宏定义是什么

在C语言源程序中,允许用一个标识符来表示一个字符串,称为宏,宏定义是由源程序中的宏定义命令完成的,宏替换是由预处理程序自动完成的。宏定义是C提供的三种预处理功能的其中一种,这三种预处理包括:宏定义、文件包含、条件编译。

(10)c语言宏编译扩展阅读:

宏(Macro),是一种批量处理的称谓。计算机科学里的宏是一种抽象,它根据一系列预定义的规则替换一定的文本模式。

计算机语言如C语言或汇编语言有简单的宏系统,由编译器或汇编器的预处理器实现。C语言的宏预处理器的工作只是简单的文本搜索和替换,使用附加的文本处理语言如M4,C程序员可以获得更精巧的宏。

阅读全文

与c语言宏编译相关的资料

热点内容
android图片变灰 浏览:268
linuxvi下一个 浏览:973
安卓手机的应用锁怎么解 浏览:735
linux增加路径 浏览:849
sql身份证号最后四位加密 浏览:533
xp系统表格加密 浏览:856
光遇安卓军大衣什么时候上线 浏览:840
android应用商店图标 浏览:341
java计算圆的面积 浏览:643
应用编译优化recovery 浏览:577
域控命令n 浏览:258
php导出文件 浏览:13
谷歌地图网页版无法连接服务器地址 浏览:298
菜鸟工具在线编译python 浏览:858
栅格化命令有何作用 浏览:823
为什么压缩文件不能解压 浏览:311
足球app哪个软件好 浏览:96
产品经理逼疯程序员的一天 浏览:17
修改svn服务器ip地址 浏览:584
下列关于编译说法正确的是 浏览:246