.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文件,对比源码文件,可以更好的理解编译器的预编译处理过程及相关机制,发现一些代码中隐藏的错误