导航:首页 > 源码编译 > c语言预编译字符串对比

c语言预编译字符串对比

发布时间:2023-06-12 09:34:21

1. C语言如何在预编译阶段比较字符串

#define dprint(expr) printf(#expr"=%d",expr)

int i=j=1;
dprint(i+j);//展开后为 printf("i+j""=%d",expr);

2. c语言,编译、预编译区别

任何一种编程语言的编译都是把代码转换成机器代码认识的格式的过程,而C语言里的预编译则是进行类似转换宏,头文件的代码拷贝,条件语句转换等等基础的转换工作。详细可以看看网络里的内容。

3. c语言编译预处理

编译,编译程序读取源程序(字符流),对之进行词法和语法的分析,将高级语言指令转换为功能等效的汇编代码,再由汇编程序转换为机器语言,并且按照操作系统对可执行文件格式的要求链接生成可执行程序。

如果用一张图来表示:

读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理

[析] 伪指令主要包括以下四个方面

(1)宏定义指令,如#define Name TokenString,#undef等。对于前一个伪指令,预编译所要做的是将程序中的所有Name用TokenString替换,但作为字符串常量的Name则不被替换。对于后者,则将取消对某个宏的定义,使以后该串的'出现不再被替换。

(2)条件编译指令,如#ifdef,#ifndef,#else,#elif,#endif,等等。这些伪指令的引入使得程序员可以通过定义不同的宏来决定编译程序对哪些代码进行处理。预编译程序将根据有关的文件,将那些不必要的代码过滤掉

(3)头文件包含指令,如#include "FileName"或者#include 等。在头文件中一般用伪指令#define定义了大量的宏(最常见的是字符常量),同时包含有各种外部符号的声明。采用头文件的目的主要是为了使某些定义可以供多个不同的C源程序使用。因为在需要用到这些定义的C源程序中,只需加上一条#include语句即可,而不必再在此文件中将这些定义重复一遍。预编译程序将把头文件中的定义统统都加入到它所产生的输出文件中,以供编译程序对之进行处理。

包含到c源程序中的头文件可以是系统提供的,这些头文件一般被放在/usr/include目录下。在程序中#include它们要使用尖括号(<>)。另外开发人员也可以定义自己的头文件,这些文件一般与c源程序放在同一目录下,此时在#include中要用双引号("")。

(4)特殊符号,预编译程序可以识别一些特殊的符号。例如在源程序中出现的LINE标识将被解释为当前行号(十进制数),FILE则被解释为当前被编译的C源程序的名称。预编译程序对于在源程序中出现的这些串将用合适的值进行替换。

注意:

预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。

4. C语言预编译命令

<>里面为库文件名
stdio为基本输入输出库,
string为字符串操作库
详细的可以看这个:
http://..com/question/257653832.html

阅读全文

与c语言预编译字符串对比相关的资料

热点内容
如何欺骗网游服务器 浏览:934
直接卡密登陆短信测压系统的源码 浏览:960
课经pdf 浏览:299
c动态编程 浏览:34
浣熊PDF 浏览:770
grep命令表达式 浏览:108
程序员半年了找不到工作怎么办 浏览:961
深圳6k程序员 浏览:520
刷脸支付oem需要源码吗 浏览:166
如何在线压缩动态图片 浏览:113
vb字母表加密 浏览:613
红帽磁盘命令 浏览:868
cmd命令大全ip地址 浏览:14
服务器被攻击什么意思 浏览:73
看去哪个app 浏览:163
埃微手环用什么app 浏览:567
培训需要编程基础吗 浏览:338
程序员写论文需要什么条件 浏览:600
三菱电机压缩机待遇 浏览:889
android电源关机 浏览:521