当前位置: 技术问答>linux和unix
奇怪的编译问题,请指教!
来源: 互联网 发布时间:2015-12-13
本文导语: 我最近做一个移植的项目,从SCO+informix7.3移植到AIX 5.3+ids9,过程中碰到了令人抓狂的问题。在这里贴出来请大家分析下可能是什么原因 在原来的程序中,定义了许多头文件,为了编成方便,定义了一个大的头文件,像...
我最近做一个移植的项目,从SCO+informix7.3移植到AIX 5.3+ids9,过程中碰到了令人抓狂的问题。在这里贴出来请大家分析下可能是什么原因
在原来的程序中,定义了许多头文件,为了编成方便,定义了一个大的头文件,像这样的:
cat tools.h
#include "a.h"
#include "b.h"
#include "c.h"
...
然后在应用程序中#include "tools.h"就行了。
然而在aix中编译时总是报一些匪夷所思的错误。比如说a.h中的某一行漏了分号,或者是b.h中的某个结构定义非法等,但实际上是没有错误的,最让人faint的是有时候汇报 “cur_strs" is not a member of struct ....,靠,头文件中定义的结构根本就没有 cur_strs这个成员,最后实在没招了,我试着在.c文件中直接
#include "a.h"
#include "b.h"
...
居然编译过了,而且运行也正常。
这到底怎么回事?还请高人指点!谢谢!!!
在原来的程序中,定义了许多头文件,为了编成方便,定义了一个大的头文件,像这样的:
cat tools.h
#include "a.h"
#include "b.h"
#include "c.h"
...
然后在应用程序中#include "tools.h"就行了。
然而在aix中编译时总是报一些匪夷所思的错误。比如说a.h中的某一行漏了分号,或者是b.h中的某个结构定义非法等,但实际上是没有错误的,最让人faint的是有时候汇报 “cur_strs" is not a member of struct ....,靠,头文件中定义的结构根本就没有 cur_strs这个成员,最后实在没招了,我试着在.c文件中直接
#include "a.h"
#include "b.h"
...
居然编译过了,而且运行也正常。
这到底怎么回事?还请高人指点!谢谢!!!
|
检查环境变量的路径,是不是有一个默认的头文件重名造成的?
|
很大的可能是重名文件吧..........
学习..MARK
学习..MARK
|
1, gcc -v ... ...将输出比较详细的信息,看看gcc默认的搜索路径都有哪些.
2, 对所有的.c文件使用 cpp 预编译,如:
cpp main.c > main.i
将会把所有#开头的进行预编译.他会将所有#include 所包含的头文件里的内容插入到.c文件里。
这样就可以很清楚看到错误出在哪里了
2, 对所有的.c文件使用 cpp 预编译,如:
cpp main.c > main.i
将会把所有#开头的进行预编译.他会将所有#include 所包含的头文件里的内容插入到.c文件里。
这样就可以很清楚看到错误出在哪里了
|
学习
您可能感兴趣的文章:
本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。
本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。