char的预编译命令
㈠ c语言中#include <stdio.h>是什么意思
包含标准头文件stdio.h。
1、#include 是C语言预编译命令之一。
include并不属于C语言关键字。以#开头的#include是预编译命令,即不是在运行过程中生效,而是在编译的时候就会生效。
include的效果为,在编译时把被包含的文件中的内容,放到被编译的c文件对应位置。
2、stdio.h是C语言库文件的头文件之一,包含了常用的标准输入输出。
比如printf,scanf等语句都是在stdio.h中的。
3、在源文件中包含了stdio.h 就等于声明了stdio.h中的所有函数,并使该文件中的所有宏定义在源文件中可用。
即使用printf,scanf等语句不会引起警告, 同时可以使用诸如NULL一类的宏定义。
㈡ c++ 编译 链接是怎么回事
compile和link是大多数语言从原代码生成可执行程序的两个步骤。
之所有有这两个步骤因为几乎任何一个程序都不是用一个原文件写出来的。compile是先针对单独原文件进行处理。link是把compile处理的结果组合成一个完整的可执行文件。
其实C/C++完全也可以一步成型,不需要compile和link两个步骤,但是那样的后果就是:一,每次生成可执行程序,必须翻译全部源代码;二,C语言的执行库(printf, scanf这些)必须都以源代码形式存在。这怎么样也说不过去吧。
另外头文件不属于compile和link过程,头文件是预编译过程的文件。
C/C++语言的完整编译过程是
一、预编译
处理#define #if #include这类#开头的语句,这些称为预编译指令。这个过程中会把.h文件和.c/.cpp文件组合成最终交给compile过程的原文件。这个原文件是不包含任何#开头的语句的。所有#define定义的宏也会被替换。
二、编译
把上面那个原文件编译成.o或者VC里是.obj文件。这个文件保存了机器码化的函数、函数的描述、全局变量的描述、乃至段的描述等等。
三、连接
把可执行程序需要的所有的编译过程产生的.o或者.obj文件组合到一起。(这里也包括.lib文件,.lib文件件本质上就是打包的.obj文件集合)。另外连接过程还会组合一些其他数据,比如资源、可执行文件头等等。