假设我有:
有没有一种方法可以区分宏的不同值。以下内容不起作用,但您可以理解这个想法。
#define Name Joe
有没有一种方法可以区分宏的不同值。以下内容不起作用,但您可以理解这个想法。
#if Name==Joe
// some code
#elif Name==Ben
// some alternative code
#endif
我想使用这个工具从同一源代码生成各种对象文件。源代码只有微小的差异,因此可以轻松地进行宏控制。该宏将通过-DName=Joe
编译器标志传递。请注意,Name
将是一个实际的符号名称,因此我们不能使用基于#define Joe 1
等的技巧。
强制编辑请注意,这个类似的问题实际上涉及到字符串值宏。此外,那里的答案并没有帮助。被接受的答案避免了这个问题(但没有解决它),另一个答案在宏中使用strcmp
,这依赖于一个扩展等等。
#define Joe
来定义名称,而不是为名称赋值呢?这样你可以使用#if defined(Joe)
来检查Joe
是否存在。 - NathanOliver