我希望能够确保不会将任何专有模块静态链接到内核中。如果没有定义MODULE,我在考虑在编译时使MODULE_LICENSE("Proprietary")
失败。 (如果没有定义MODULE_LICENSE("GPL")
,则会失败...)。
但我找不到比较宏中字符串的好方法 - 任何人都有这方面的好解决方案吗?
答案 0 :(得分: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