⑴ c语言gcc编译器如何处理不同编码的中文txt文件
纯linux环境下iconv库可以干这些
⑵ 请问GCC编译器是如何实现对程序引入的头文件的处理的
预处理过程阶段。
将头文件插入到.c文件中。
比如#include <stdio.h> ,就会把stdio.h头文件中的内容插入到对应的.c #include的那行。如果头文件中还有include, 递归插入。直到没有为止。
详细参见gnu gcc 说明文档。
http://gcc.gnu.org/onlinedocs/cpp/
⑶ C++ 编译器如何处理头文件
预处理包括把头文件的内容在 #include 处展开,也包括处理 #define,当然,还有处理 #if / #ifdef 等等
函数(inline 函数除外)和变量在整个程序中最多只能定义一次,程序中用到的函数 / 变量必须被定义。这被称作“一处定义原则”(one-definition rule),是C++的基本规则之一
⑷ 编译器的编译器优化
应用程序之所以复杂, 是由于它们具有处理多种问题以及相关数据集的能力。实际上, 一个复杂的应用程序就象许多不同功能的应用程序“ 粘贴” 在一起。源文件中大部分复杂性来自于处理初始化和问题设置代码。这些文件虽然通常占源文件的很大一部分, 具有很大难度, 但基本上不花费C PU 执行周期。
尽管存在上述情况, 大多数Makefile文件只有一套编译器选项来编译项目中所有的文件。因此, 标准的优化方法只是简单地提升优化选项的强度, 一般从O 2 到O 3。这样一来, 就需要投人大量 精力来调试, 以确定哪些文件不能被优化, 并为这些文件建立特殊的make规则。
一个更简单但更有效的方法是通过一个性能分析器, 来运行最初的代码, 为那些占用了85 一95 % CPU 的源文件生成一个列表。通常情况下, 这些文件大约只占所有文件的1%。如果开发人员立刻为每一个列表中的文件建立其各自的规则, 则会处于更灵活有效的位置。这样一来改变优化只会引起一小部分文件被重新编译。进而,由于时间不会浪费在优化不费时的函数上, 重编译全部文件将会大大地加快。
⑸ 编译器如何处理头文件
预处理包括把头文件的内容在 #include 处展开,也包括处理 #define,当然,还有处理 #if / #ifdef 等等
函数(inline 函数除外)和变量在整个程序中最多只能定义一次,程序中用到的函数 / 变量必须被定义。这被称作“一处定义原则”(one-definition rule),是C++的基本规则之一
⑹ 很多编译器都有个LIB文件夹,里面有很多.lib文件,它们的作用是什么
.lib文件是程序的二进制库文件,编译器连接程序是一般会用到.
如:
main()
{
printf("abc");
}
在这个程序中,你是不用编写输出函数代码的,直接调用printf()函数的就可以输出字符串了.printf()函数的二进制代码就是在.lib文件中,只是程序编译后,把它的二进制代码加到了本例程序中.
在TC2.0下,.lib文件可以用tlib.exe程序建立.
⑺ VS2008 编译时出现的错误:无法打开编译器中间文件。如何解决
你这个跟我的问题一模一样。。。
原因:W盘是某个软件建的一个盘,它修改了环境变量TMP和TEMP的路径
解决方法:我的电脑->属性->高级->环境变量,把里面这两个变量的路径修改一下,改成C盘、D盘都行
⑻ 汇编器、编译器、编辑器
有链接器,编辑器,编译器.
GCC的话就是把 先把源文件预处理成纯C的文件,编译器把纯C文件转换成汇编程序,汇编器再把汇编程序变成 目标文件. 连接器 去链接库文件,然后生成可执行文件... ...
其实编译器,没有什么功能,就和文本 TXT一样,只不过多了一些语法高亮功能.
纯C文件,说白了,就是去掉一些没有的东西,比如注释,还有一些用不到的东西.
然后纯C文件变成汇编的代码,