c++ #include
在windows下VS写过c++代码的同学知道,若想include一个.h文件必须明确告诉编译器该文件的路径,方式可以有2:
- 以当前文件所在工程文件(.vsproj)为基准,推算.h文件的路径。这种方式一般用于include工程内部的.h文件;
- 将.h文件所在目录的某上级目录配置在工程中,以该上级目录作为基准推算.h文件的路径。这种方式一般用于include基础库/第三方库等“较远”的目录下的文件。
无论是那种方式,每次include都要小心数一数到底是要后退几级再开始前进(如“../../../../base/include/string.h”之类),也常常需要在工程中配置路径。好生烦恼……对于老程序员都是一个非常头疼的事,对新手就更不用说有多痛苦了。
object-c #import
现在转到MAC下的xcode,简单多了——再也不用关心路径问题了。直接 #import "xxx.h"就够了(当然,前提是xxx.h文件已经加到工程中)。不管该文件深在哪个犄角旮旯的文件夹中,xcode都能帮你找到。好像这一堵一堵的文件夹“墙”都成了透明的。自然,一个不好的结果是:在不同文件夹中,相同的文件名会冲突。 听说而已,我没有亲见。(因为现在用swift,对object-c的学习仅至能看懂/简单用即可,没有亲自尝试。)
以上理论没有找到理论根据,仅是在实践时遇到问题(在object-c中import时“自作多情”地加了路径,总是“找不到xxx.h文件”),有object-c经验的同事依此理论解决了问题,觉得跟c++迥异,故纪录下来。后续也试图找理论依据,没有得逞,仅找到一个有板有眼的帖子,算是一个撑腰的吧。见stackoverflow 另外,看了一下著名的AFNetworking源代码,也确实是这样的,就信了吧。