小编Flo*_*ach的帖子

在编译时计算函数参数计数

我有一个 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 的修改版本。

c overloading compile-time

46
推荐指数
5
解决办法
2555
查看次数

在 Python 中检测 OS 暗模式

我正在用 python 编写一个带有 GUI 的小程序,我正在使用 tkinter。我想做的是为我的程序添加暗模式支持。Mac OS、Ubuntu(至少是 Gnome)和 Windows 10 都有一个系统范围的“黑暗模式”设置,这将使所有程序自动以黑暗主题运行。

但是我如何检查这些设置(理想情况下,与操作系统无关),以便我的程序知道它是否需要渲染亮模式或暗模式?我找到了一堆像darkdetect这样的库,它们可以为 MacOS 处理这个问题,但我没有找到任何适用于 Ubuntu 和 Windows 10 的库。

我知道我可以使用 ttkthemes 之类的东西为我的程序创建一个黑暗主题的设计,但我怎么知道何时启用它?在 Windows 10 或 Ubuntu 20.04 上运行的 python 脚本如何确定用户是否在操作系统设置中启用了暗模式?

理想情况下,我正在寻找可以在所有三个操作系统上运行的解决方案/代码,但如果这不可能(正如我怀疑的那样),依赖于操作系统的代码也可以。我在任何地方都找不到非 MacOS 系统的正确示例。

python user-interface tkinter

7
推荐指数
3
解决办法
1060
查看次数

标签 统计

c ×1

compile-time ×1

overloading ×1

python ×1

tkinter ×1

user-interface ×1