C++ 是否更好的做法是包括;弗林特;或;燧石/燧石.h“;
库将所有标题放入C++ 是否更好的做法是包括;弗林特;或;燧石/燧石.h“;,c++,c,header-files,include-path,subdirectory,C++,C,Header Files,Include Path,Subdirectory,库将所有标题放入$PREFIX/include/flint/中。然后,该库包含燧石标头。以下哪一项是Arb更好的实践: #包括“flint.h” #包括“flint/flint.h” 优点/缺点: 如果Arb和Flint安装在/usr/include(例如在Debian中),那么使用2,用户不必做任何事情,但使用1,用户需要使用-I/usr/include/Flint 所以2的优势。使用Arb库的用户只需为所有需要的库指定$PREFIX/include的包含路径(-I)。对于1.,必须包含路径$
$PREFIX/include/flint/
中。然后,该库包含燧石标头。以下哪一项是Arb更好的实践:
#包括“flint.h”
#包括“flint/flint.h”
/usr/include
(例如在Debian中),那么使用2,用户不必做任何事情,但使用1,用户需要使用-I/usr/include/Flint
所以2的优势。使用Arb库的用户只需为所有需要的库指定
$PREFIX/include
的包含路径(-I
)。对于1.,必须包含路径$PREFIX/include/flint
,因此看起来需要做更多的工作 始终使用相对于/usr/include
的路径。这样,您的代码将在大多数UNIX系统上开箱即用,避免名称冲突(想想headerutil.h
)
一旦您的项目需要移植到开发人员不太友好的平台(主要是Windows),您的构建系统将需要确定依赖项的位置并设置适当的编译器开关。始终使用相对于
/usr/include
的路径。这样,您的代码将在大多数UNIX系统上开箱即用,避免名称冲突(想想headerutil.h
)
一旦您的项目需要移植到开发人员不太友好的平台(主要是Windows)上您的生成系统需要确定依赖项的位置并设置适当的编译器开关。库的开发人员倾向于将类a放入头文件a.h中。如果您使用的两个库碰巧具有相同名称的类,则可能包含来自错误库的头文件,根据通过-I传递的include目录的顺序,有时确实会发生这种情况。C++命名空间机制在这里不起作用。这样做:
#include "x/A.h"
而不仅仅是
#include "A.h"
可以帮助您避免此类名称冲突,并确保包含x库中的A.h,而不是y库中的A.h。库的开发人员倾向于将类A放入头文件A.h中。如果您使用的两个库恰好具有相同名称的类,根据通过-I传递的include目录的顺序,可能会出现包含来自错误库的头的情况。C++命名空间机制在这里不起作用。这样做:
#include "x/A.h"
而不仅仅是
#include "A.h"
可以帮助您避免此类名称冲突,并确保包含x库中的A.h,而不是y库中的A.h。我个人更喜欢2。如果其他人在另一个项目中也有一个flint.h,而您也需要使用该文件呢?您需要使用“flint/”形式。所以从一开始就坚持这个观点。为什么这个问题应该以观点为基础来解决呢?有一个令人信服的技术论据,为什么应该首选第二种形式。确切地说,下面的两个答案(@pmr,@piokuc)都表明2。这是一条路要走。谢谢你们两位的回答!使用文档中的建议。Flint 2.4.4文档包含对
的引用,包括“Flint.h”
;除非你确定你知道你在做什么,否则就照这个做。我个人更喜欢2。如果其他人在另一个项目中也有一个flint.h,而您也需要使用该文件呢?您需要使用“flint/”形式。所以从一开始就坚持这个观点。为什么这个问题应该以观点为基础来解决呢?有一个令人信服的技术论据,为什么应该首选第二种形式。确切地说,下面的两个答案(@pmr,@piokuc)都表明2。这是一条路要走。谢谢你们两位的回答!使用文档中的建议。Flint 2.4.4文档包含对的引用,包括“Flint.h”
;除非你确定自己知道自己在做什么,否则就跟着做。谢谢!所以2。走吧,谢谢!所以2。这是一条路要走。