在我的应用程序中,我使用带有头文件foo.h
在我的构建脚本中,我使用gcc -I
标记-I./lib
。
foo
库位于目录./lib/foo
中。在我的主要应用程序中,我将foo.h
包括为
#include "foo/foo.h"
现在我将我的应用程序的一部分重构为库bar
,我希望将其静态链接到另一个应用程序。此库bar
取决于foo
。使用我当前的项目布局,我可以在foo
中包含bar
作为
#include "foo/foo.h"
但是,这会强制bar
的用户将foo
放在名为foo
的目录中。
在这种情况下,标准的事情是以下吗?
在构建脚本中添加-I
标记,允许foo
中的bar
包含
#include "foo.h"
答案 0 :(得分:1)
使用包含文件的文件夹结构的原因是为了防止与同名头文件冲突。例如,假设我使用库进行加密,并且它们有一个名为“status.h”的头文件。同时我想使用消息库,它们还有一个名为“status.h”的头文件。它们不能共存于同一目录中,如果您将目录设为包含路径,则可能无法知道要包含哪个目录。如果你将它们分开,你可以同时包括:
#include "encryption/status.h"
#include "messaging/status.h"
因此,您的问题的答案取决于您认为包含文件的名称与其他库的其他包含文件冲突的可能性。如果它永远不会发生冲突那么你所建议的就好了。如果它们发生冲突,请让他们使用目录。
快乐的编码!