比较C宏中的字符串(对于MODULE_LICENSE)

时间:2012-05-25 14:49:09

标签: macros linux-device-driver c-preprocessor

我希望能够确保不会将任何专有模块静态链接到内核中。如果没有定义MODULE,我在考虑在编译时使MODULE_LICENSE("Proprietary")失败。 (如果没有定义MODULE_LICENSE("GPL"),则会失败...)。

但我找不到比较宏中字符串的好方法 - 任何人都有这方面的好解决方案吗?

1 个答案:

答案 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