我有一个 C 库(带有 C 头文件),它存在于两个不同的版本中。
其中之一具有如下所示的函数:
int test(char * a, char * b, char * c, bool d, int e);
Run Code Online (Sandbox Code Playgroud)
另一个版本看起来像这样:
int test(char * a, char * b, char * c, bool d)
Run Code Online (Sandbox Code Playgroud)
(为此, e 不是作为函数参数给出的,而是在函数本身中硬编码的)。
库或其头文件没有定义/包含任何检查库版本的方法,所以我不能只使用#ifor#ifdef来检查版本号。
有什么办法可以编写一个可以用这个库的两个版本编译的C程序,这取决于编译程序时安装的是哪个版本?这样,想要编译我的程序的贡献者可以自由使用库的任一版本,并且该工具可以使用任一版本进行编译。
所以,澄清一下,我正在寻找这样的(或类似的):
#if HAS_ARGUMENT_COUNT(test, 5)
test("a", "b", "c", true, 20);
#elif HAS_ARGUMENT_COUNT(test, 4)
test("a", "b", "c", true);
#else
#error "wrong argument count"
#endif
Run Code Online (Sandbox Code Playgroud)
有没有办法在C中做到这一点?我想不出办法。
该库将是 libogc ( https://github.com/devkitPro/libogc ),它if_config在不久前改变了它的定义,我想让我的程序同时使用旧版本和新版本。我在库中找不到任何版本标识符。目前我使用的是 GCC 8.3 的修改版本。
我正在用 python 编写一个带有 GUI 的小程序,我正在使用 tkinter。我想做的是为我的程序添加暗模式支持。Mac OS、Ubuntu(至少是 Gnome)和 Windows 10 都有一个系统范围的“黑暗模式”设置,这将使所有程序自动以黑暗主题运行。
但是我如何检查这些设置(理想情况下,与操作系统无关),以便我的程序知道它是否需要渲染亮模式或暗模式?我找到了一堆像darkdetect这样的库,它们可以为 MacOS 处理这个问题,但我没有找到任何适用于 Ubuntu 和 Windows 10 的库。
我知道我可以使用 ttkthemes 之类的东西为我的程序创建一个黑暗主题的设计,但我怎么知道何时启用它?在 Windows 10 或 Ubuntu 20.04 上运行的 python 脚本如何确定用户是否在操作系统设置中启用了暗模式?
理想情况下,我正在寻找可以在所有三个操作系统上运行的解决方案/代码,但如果这不可能(正如我怀疑的那样),依赖于操作系统的代码也可以。我在任何地方都找不到非 MacOS 系统的正确示例。