如果库使用它们,应该在哪里声明库#defines?
问题描述:
这似乎是一个相当愚蠢的问题,但我对我写在我声明了一些字符串常量库中的头文件:如果库使用它们,应该在哪里声明库#defines?
#define CONST1 "Hello, World!"
#define CONST2 "Foo Bar"
// etc
库的源利用这些常数,因此我需要包括源代码中的头文件:
#include <header.h>
void func() {
printf("%s\n", CONST1);
}
这导致最终用户不需要为包括他们使用的库编写任何源的头文件。这是最佳做法还是有其他选择?
答
是的,这是传统的方法。为了清楚起见,我会建议你在预处理器符号前面添加一些内容,使它们不太可能与用户应用程序代码或其他库相冲突。
我不看你怎么个意思与用户代码不需要包括你的头,虽然...因为这些都是预处理器符号,则需要与定义的头,如果符号是用户感兴趣的程序。
如果这些字符串只用于里面的您的库实现,那么您可以将它们移动到私有头部以减少混淆。
谢谢。这些字符串主要用于图书馆,尽管它们也可以在外部使用。我会考虑为他们使用一个单独的标题。 – BWHazel 2011-05-03 15:59:59