Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/elixir/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅标头库的配置(C+;+;) 我在C++中只写了一个头文件库。 让事情尽可能简单,用户只需#包括mylib.h_C++_Config_Header Files_Configuration Files_Lib - Fatal编程技术网

仅标头库的配置(C+;+;) 我在C++中只写了一个头文件库。 让事情尽可能简单,用户只需#包括mylib.h

仅标头库的配置(C+;+;) 我在C++中只写了一个头文件库。 让事情尽可能简单,用户只需#包括mylib.h,c++,config,header-files,configuration-files,lib,C++,Config,Header Files,Configuration Files,Lib,在某些情况下,(高级)用户可能希望配置库的行为(例如错误处理、编译时或运行时检查、调试输出,以及可能的其他内容) 请不要告诉我这样做的最佳方式(甚至是标准方式),否则问题将被搁置 现在,我有一个文件'config.h'作为我的库的一部分,其中包含关于定义MYLIB#xyz的代码,但我意识到这完全是胡说八道,因为用户需要修改库本身才能进行配置。您可以保留提供默认值的config.h。只需通过选中来包装每个预处理器定义: #ifndef MYLIB_XYZ #define MYLIB_XYZ 1 /

在某些情况下,(高级)用户可能希望配置库的行为(例如错误处理、编译时或运行时检查、调试输出,以及可能的其他内容)

请不要告诉我这样做的最佳方式(甚至是标准方式),否则问题将被搁置


现在,我有一个文件'config.h'作为我的库的一部分,其中包含关于定义MYLIB#xyz的代码,但我意识到这完全是胡说八道,因为用户需要修改库本身才能进行配置。

您可以保留提供默认值的
config.h
。只需通过选中来包装每个预处理器定义:

#ifndef MYLIB_XYZ
#define MYLIB_XYZ 1 // some sensible default
#endif
如果用户设置了“定义自己”,则将使用用户设置的值。否则,它将返回到您提供的默认值

只是别忘了将包含在每个头文件中


类似的内容在中使用,最明显的是在中使用了Microsoft提供的仅页眉库。

您可以保留提供默认值的
config.h
。只需通过选中来包装每个预处理器定义:

#ifndef MYLIB_XYZ
#define MYLIB_XYZ 1 // some sensible default
#endif
如果用户设置了“定义自己”,则将使用用户设置的值。否则,它将返回到您提供的默认值

只是别忘了将包含在每个头文件中


类似的内容在中使用,最明显的是在中使用的是Microsoft提供的仅页眉库。

但是,用户必须知道,在包含库之前,他必须先定义
#defines
!这是标准做法吗?他们很可能会在命令行
-DMYLIB_XYZ=
上设置define。关于“之前”部分,这是预处理器。在包含文件时,每个标志都已解析。是的,这是常见的。Windows标题使用相同的机制:非常不令人满意,因为我有所有积极的语句,如
MYLIB\u CHECKX
,它们必须转换为消极的
MYLIB\u DONT\u CHECKX
,因为我想坚持使用无(冗余)默认值的裸定义。似乎没有其他(不那么尴尬的)方法,因此thx.用户必须意识到,在包含lib之前,他必须先定义
#defines
!这是标准做法吗?他们很可能会在命令行
-DMYLIB_XYZ=
上设置define。关于“之前”部分,这是预处理器。在包含文件时,每个标志都已解析。是的,这是常见的。Windows标题使用相同的机制:非常不令人满意,因为我有所有积极的语句,如
MYLIB\u CHECKX
,它们必须转换为消极的
MYLIB\u DONT\u CHECKX
,因为我想坚持使用裸定义而不使用(冗余)默认值。似乎没有其他(不那么尴尬的)方法,所以thx。耶稣基督!!!上帝啊!!!