首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

.i文件是做什么用的解决思路

2012-02-15 
.i文件是做什么用的产品的代码出现不少.i文件,不是很明白其用途。上网搜了些资料,http://ruger.linux-fans.

.i文件是做什么用的
产品的代码出现不少.i文件,不是很明白其用途。
上网搜了些资料,http://ruger.linux-fans.com/2006/11/   如下说:

.i           预处理后的C文件;编译,汇编
.ii         预处理后的C++文件;编译,汇编

有几个问题想请教一下各位:
1、.i文件相对于.cpp文件有什么不同?
2、什么情况下需要用.i文件?
3、用.i文件有什么好处?
4、VC编译器认.i文件吗?还是只有UNIX下的编译器才有这类文件?

[解决办法]
它是环境相关的
[解决办法]
gcc
认为预处理后的文件(.i)是C文件,并且设定C形式的连接.
g++
认为预处理后的文件(.i)是C++文件,并且设定C++形式的连接.

至于它们和 C/C++文件的区别,
就是一点, 预处理完成的工作,
比如 #if , #define 的替换等等 ...
(看看 C/C++ 预处理相关的知识)
[解决办法]
1、.i文件相对于.cpp文件有什么不同?
你可以自己手动产生.ii 文件. 比如你有一个 x.c 源c++文件, 你在linux 下,可以 g++ -E x.c > x.ii 你可以比较一下他们的不同. x.ii是 经过预处理的文件. c 文件同上, 把g++ 换成别的.

2、什么情况下需要用.i文件?
你可以对.i 文件直接编译和联结,生成 可执行文件.

3、用.i文件有什么好处?
.i 文件 只是一个中间产物.无所谓好坏.

4、VC编译器认.i文件吗?还是只有UNIX下的编译器才有这类文件?
这个和预处理器 编译器有关.
[解决办法]
gcc
认为预处理后的文件(.i)是C文件,并且设定C形式的连接.
g++
认为预处理后的文件(.i)是C++文件,并且设定C++形式的连接.

至于它们和 C/C++文件的区别,
就是一点, 预处理完成的工作,
比如 #if , #define 的替换等等 ...
(看看 C/C++ 预处理相关的知识)

[解决办法]
其实这2种中间的目标文件在开发特别是调测分析定位问题中非常有用,通过这个预编译后生成的.i,.ii文件,对比源码文件,可以更好的理解编译器的预编译处理过程及相关机制,发现一些代码中隐藏的错误

热点排行