㈠ c语言 选择题,选正确的,选好了给个说明
A)预处理命令行必须位于源文件的开头
B)在源文件的一悉兄行上可以有多条预处理命令
C)宏名必须用大写字母表示
D)宏替换不占用程序的运行时间
答案:D
评析:通常,预处理命令位于源文件的开头,也可以写在函数与函数之间;不能在一行上写多条预处理命令:宏名一般习惯用大写字母表示,以便与变量名相区别,但这并非规定,也可睁判袭用小写字母。
预处理命令是以#号开头的代码行,每一条预处理命令必须单独占用一行,由于不是C的语句,因此在结尾不能有分号“;”。
宏被定义后,其作用域一般为定义它的文件,通常#define命令写在文件的开头,但这也并非规定,实际上宏冲伏定义可以出现在程序的任何地方,但必须位于引用之前。
㈡ 常见的预处理命令有哪两种
很多小伙伴在自己写代码的时候,已经多次使用过include命令。使用库函数之前,应该用include引入对应的头文件。其实这种以#号开头的命令称为预处理命令。
C语言源文件要经过编译、链接才能生成可执行程序:
1) 编译(Compile)会将源文件(.c文件)转换为目标文件。对于 VC/VS,目标文件后缀为.obj;对于GCC,目标文件后缀为.o。
编译是针对单个源文件的,一次编译操作只能编译一个源文件,如果程序中有多个源文件,就需要多次编译操作。
2) 链接(Link)是针对多个文件的,它会将编译生成的多个目标文件以及系统中的库、组件等合并成一个可执行程序。
关于编译和链接的过程、目标文件和可执行文件的结构、.h 文件和 .c 文件的区别,我们将在后期专题中讲解。
在实际开发中,有时候在编译之前还需要对源文件进行简单的处理。例如,我们希望自己的程序在 Windows 和 Linux 下都能够运行,那么就要在 Windows 下使用 VS 编译一遍,然后在 Linux 下使用 GCC 编译一遍。但是现在有个问题,程序中要实现的某个功能在 VS 和 GCC 下使用的函数不同(假设 VS 下使用 a(),GCC 下使用 b()),VS 下的函数在 GCC 下不能编译通过,GCC 下的函数在 VS 下也不能编译通过,怎么办呢?
这就需要在编译之前先对源文件进行处理:如果检测到是 VS,就保留 a() 删除 b();如果检测到是 GCC,就保留 b() 删除 a()。
这些在编译之前对源文件进行简单加工的过程,就称为预处理(即预先处理、提前处理)。
预处理主要是处理以开头的命令,例如include <stdio.h>等。预处理命令要放在所有函数之外,而且一般都放在源文件的前面。
预处理是C语言的一个重要功能,由预处理程序完成。当对一个源文件进行编译时,系统将自动调用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
编译器会将预处理的结果保存到和源文件同名的.i文件中,例如 main.c 的预处理结果在 main.i 中。和.c一样,.i也是文本文件,可以用编辑器打开直接查看内容。
C语言提供了多种预处理功能,如宏定义、文件包含、条件编译等,合理地使用它们会使编写的程序便于阅读、修改、移植和调试,也有利于模块化程
㈢ 什么叫预处理命令
ANSI C标准规定, C源程序中可以加入一些预处理命令,以改进程序设计环境,提高编程效率.
预处理命令不是C语言本身的组成部分,所以在使用时以"#"开头,以示和C语句的区别.
编译程序在对源程序编译之前首先对预处理命令进行处理(称为预处理),将其替换成具有实际意义的内容,然后再进行编译.
常用的预处理功能有:宏定义,文件包含,条件编译.
具体例子http://www.sxuu.com/loveuu/Article/computer/dengji/erji/c2c/200508/3914.html
㈣ c语言中,以"#"开头的控制行都是预处理命令吗
对的。
预处理(或称预编译)是指在进行编译的第一遍扫描(词法扫描和语法分析)之前所作的工作。预处理指令指示在程序正式编译前就由编译器进行的操作,可放在程序中任何位置。
预处理是C语言的一个重要功能,它由预处理程序负责完成。当对一个源文件进行编译时,系统将自动引用预处理程序对源程序中的预处理部分作处理,处理完毕自动进入对源程序的编译。
C语言提供多种预处理功能,主要处理#开始的预编译指令,如宏定义(#define)、文件包含(#include)、条件编译(#ifdef)等。合理使用预处理功能编写的程序便于阅读、修改、移植和调试,也有利于模块化程序设计。
㈤ 为什么A是对的,预处理命令行都必须以#号开始 才是对的把
因为如果代码是注释它就不起作用了。
如/*注释#define。
B、预处理命令行不可以 宏定义是可以的。
C、程序在执行过程中对预处理命令行进行处理。是在执行过程之前,所以才称为预处理,就是先于程序处理的意思,这是对的。
宏定义又称为宏代换、宏替换,简称“宏”。格式:#define标识符文本,其中的标识符就是所谓的符号常量,也称为“宏名”。
D、对预处理命令行的处理是在编译之前完成的,不是程序执行的过程中,选D。
正确的宏定义是#define S(r) ((r)*(r))
(2)宏名和参数的括号间不能有空格
(3)宏替换只作替换,不做计算,不做表达式求解
(4)函数调用在编译后程序运行时进行,并且分配内存。宏替换在编译前进行,不分配内存
(5)宏的哑实结合不存在类型,也没有类型转换。
(6)宏展开使源程序变长,函数调用不会
(7)宏展开不占运行时间,只占编译时间,函数调用占运行时间(分配内存、保留现场、值传递、返回值)。