是否可以使用预处理器发出不区分大小写的#define语句?
例如,我想将foobar的任何外壳转换为spameggs,即:
FooBar -> spameggs
foobar -> spameggs
fooBar -> spameggs
Foobar -> spameggs
FOOBAR -> spameggs
FOOBAr -> spameggs (an odd possibility I know)
etc
这背后的原因是我想#define一些fortran子程序有不同的名称,它们当然不区分大小写。请注意,我并不真正关心保留大写方案(在最后一个例子中似乎有些无意义)。
答案 0 :(得分:4)
唉,如您所知,C标识符区分大小写。因此,预处理器符号也是如此(如果一个是区分大小写而另一个不是,当你打算用预处理器改变其中一个符号时,你会得到一些非常奇怪的行为)。此行为没有覆盖标志,也没有替代define
构造(至少我在GCC编译器前端知道C /++)。
最明显的解决方案是grep
您foobar
的代码,不区分大小写。使用结果构建一个包含所有可能的foobar外壳的表格
在后面的解决方案中,你不需要用这个来污染一些人类可读的代码 - 只需要机器生成一个充满这些重映射的FixFooBar.h
文件,并将其包含在需要的地方。
答案 1 :(得分:-1)
您是否尝试过使用输入命令:
subroutine name1 (args)
entry name2 (args)
entry name3 (args)
....
return
end