3

我希望能够确保我不会意外地将任何专有模块静态链接到内核中。MODULE_LICENSE("Proprietary")如果未定义 MODULE,我正在考虑在编译时失败。(或者更好的是,如果MODULE_LICENSE("GPL")未定义则失败......)。

但是我找不到在宏中比较字符串的好方法——有人对此有什么好的解决方案吗?

4

1 回答 1

2

我不认为你能做到这一点。

通常完成的方式是定义预处理器符号,并比较它们的(整数)值:

#define LICENSE_PROPRIETARY 1
#define LICENSE_GPL         2
#define LICENSE_MIT         3

#define MODULE_LICENSE      LICENSE_GPL

#if MODULE_LICENSE != LICENSE_GPL
#error "Not GPL, fail fail"
#endif
于 2012-05-25T14:59:41.147 回答