我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:2019跑狗图高清彩图 > 指令处理 >

在C语言中预处理指令有什么作用?比如define 宏名 字符串

归档日期:07-08       文本归类:指令处理      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  在程序中的H(x)就被替换为x*x+x,重点是,原样替换,就是你定义的是什么就按照那个形式原样替换而不能任意加括号

  for example :当碰到H(2+2)应替换为:2+2*2+2+2+2=12,而不是(2+2)*(2+2)+(2+2)=20

  展开全部预处理器的主要作用就是把通过预处理的内建功能对一个资源进行等价替 换,最常见的预处理有:文件包含,条件编译、布局控制和宏替换4种

  文件包含:#include 是一种最为常见的预处理,主要是做为文件的引用组合 源程序正文。

  进行有选择的挑选, 注释掉一些指定的代码, 以达到版本控制、 防止对文件重复包含的功能。

  #progma,这也是我们应用预处理的一个重要方面,主要功能是 为编译程序提供非常规的控制流信息。 宏替换:

  #define,这是最常见的用法,它可以定义符号常量、函数功能、 重新命名、字符串的拼接等各种功能

  展开全部预处理就是进行一个等价替换。如#include 文件名 ,就是编译时把相应文件替换包含进来;

  #define则定义一个宏,代码中可能多次用到该常量,这样define后就会进行替换,方便常量值的修改

  展开全部C语言预处理程序的作用是根据源代码中的预处理指令修改你的源代码。预处理指令是一种命令语句(如#define),它指示预处理程序如何修改源代码。在对程序进行通常的编译处理之前,编译程序会自动运行预处理程序,对程序进行编译预处理,这部分工作对程序员来说是不可见的。

  预处理程序读入所有包含的文件以及待编译的源代码,然后生成源代码的预处理版本。在预处理版本中,宏和常量标识符已全部被相应的代码和值替换掉了。如果源代码中包含条件预处理指令(如#if),那么预处理程序将先判断条件,再相应地修改源代码。

  上例通过预处理指令定义了3个标识符常量(即TRUE,FALSE和PIG_LATIN)和一个宏(即GREATER(a,b)),并使用了一组条件编译指令。当预处理程序处理上例中的源代码时,它首先读入stdio.h头文件,并解释其中的预处理指令,然后把所有标识符常量和宏用相应的值和代码替换掉,最后判断PIG_LATIN是否为TRUE,并由此决定是使用拉丁文还是使用英文。

  多数编译程序都提供了一个命令行选项,或者有一个独立的预处理程序,可以让你只启动预处理程序并将源代码的预处理版本保存到一个文件中。你可以用这种方法查看源代码的预处理版本,这对调试与宏或其它预处理指令有关的错误是比较有用的。

  展开全部种类很多,不同的运行环境,通常还会增加很多新的预处理命令,预处理命令是用来控制编译器的。。。可以告诉编译器,所使用的文件路径(#include),条件编译(在什么条件下编译,什么条件下不编译,if,ifdef,,endif) ,宏设置(define,用途是第1段字符串代替第2段字符串,比如#define NC int,编译器看到单独的NC,就会认为他是int,所以你可以 NC a,定义一个整型变量)。。。。

  最为复杂的就是 pragma 很多不同运行环境的C程序都会添加一些自己添加的特殊的预处理控制命令,当然也都支持C语言固有的。。。他们前面都会有pragma 比如很多时候我希望使用汇编程序,写一段代码,那就可以 用 #pragma asm 来告诉编译器,在一些代码,经常还要控制数据存放的位置,同样需要#pragma 存储器名 :地址等。。。。

  不管怎样,与处理命令都是用来控制编译器的,本身不是程序代码,就像我要求一个工人做一个东西,但有时我会提出特殊要求,要求使用特定工具或者特殊要求(pragma),或者告诉他某个材料的位置等等(#include),还有可能用一些暗语(宏),不过这些本身却不是程序代码,只是一种编译前的约定或必要的交代。。。。

本文链接:http://ok-panic.net/zhilingchuli/286.html