文章详情

  • 游戏榜单
  • 软件榜单
关闭导航
热搜榜
热门下载
热门标签
php爱好者> php文档>g++遇到的奇怪问题

g++遇到的奇怪问题

时间:2010-05-22  来源:pkuwwt

在linux下使用g++时,遇到了一个很奇怪的问题,我知道这问题的起因在于我自己,但是,我觉得g++的设计也脱不了干系。
问题很简单,假设hello.cpp内容只有一句话

#include<iostream>


编译一下,除了抱怨没有main函数之外,没有其它的错误。
如果你在hello.cpp所在目录下新建一个string的文件,里面什么内容都可以,也可以没有内容。
然后,你再尝试编译一下,会出现大量的错误。基本都是追溯到iostream引用的那些底层头文件上去了,比如/usr/include/c++/4.4/bits/locale_classes.h或者/usr/include/c++/4.4/bits/ios_base.h之类的。如果string是个可执行文件,更是会出现./string: error stray '\3' in program之类的错,这个错误严重误导了我。当然,我如果细心一点,会发现./string已经提示我问题所在了。所以当我跳出当前目录(假设为cpp),再执行的时候问题就不存在了,这让我当时非常困惑。

cd ..
g++ cpp/hello.cpp


现在想来,这样做没有问题是显然的了。
那么,问题的来源排除了,得到的教训是写程序不要与系统文件重名。
但是,还有一个很重要的问题是bits/locale_classes.h中的引用是

#include<string>

按理说,这种引用方式是先搜索系统目录/usr/include/c++/4.4,但本例显示,它确实先搜索了当前目录。
这是为什么呢?暂时不清楚
相关阅读 更多 +
排行榜 更多 +
辰域智控app

辰域智控app

系统工具 下载
网医联盟app

网医联盟app

运动健身 下载
汇丰汇选App

汇丰汇选App

金融理财 下载