c - 如果库使用#defines,应该在哪里声明库?

标签 c c-preprocessor

这似乎是一个相当愚蠢的问题,但我有一个我正在编写的库的头文件,我在其中声明了一些字符串常量:

#define CONST1 "Hello, World!"
#define CONST2 "Foo Bar"
// etc

库的源代码使用了这些常量,因此我需要在源代码中包含头文件:

#include <header.h>
void func() {
    printf("%s\n", CONST1);
}

这导致最终用户不需要在他们使用库编写的任何源代码中包含头文件。这是最佳做法还是有替代方案?

最佳答案

是的,这是传统的方法。我建议(为清楚起见)您在预处理器符号前加上一些东西,使它们不太可能与用户应用程序代码或其他库发生冲突。

我不明白你的意思是用户代码不需要需要包含你的标题,但是......因为这些是预处理器符号,如果符号是对用户程序感兴趣。

如果字符串仅在您的库实现中内部使用,那么您或许可以将它们移至私有(private) header 以减少混淆。

关于c - 如果库使用#defines,应该在哪里声明库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5817689/

相关文章:

c - C中使用递归的回文数

c - Blit 比条件 + 指针增量更快?

C指针问题

c - 有没有办法从字符串中获取 evdev 键码?

objective-c - 自定义日志记录宏不接受多个参数

C 预处理器 - 递归条件计数宏

c - Mpi_recv 在等待从属进程发送的消息时挂起

c++ - 清除预处理宏

c - -fopenmp 提供什么预处理器定义?

c++ - 如何编写安全且用户友好的 c/c++ #define 宏