gpt4 book ai didi

c-preprocessor - 不区分大小写#define

转载 作者:行者123 更新时间:2023-12-04 20:53:45 24 4
gpt4 key购买 nike

是否可以使用预处理器发出不区分大小写的 #define 语句?

例如,我想将 foobar 的任何大小写转换为 spameggs,即:

FooBar -> spameggs
foobar -> spameggs
fooBar -> spameggs
Foobar -> spameggs
FOOBAR -> spameggs
FOOBAr -> spameggs (an odd possibility I know)
etc

这背后的原因是我想#define 一些fortran 子程序以具有不同的名称,并且它们当然是不区分大小写的。请注意,我并不真正关心保留大写方案(在最后一个例子中似乎有点无稽之谈)。

最佳答案

唉,如您所知,C 标识符区分大小写。因此,预处理器符号也是如此(如果一个区分大小写而另一个不区分大小写,当您打算使用预处理器仅更改一个符号时,您可能会得到一些非常奇怪的行为)。此行为没有覆盖标志,也没有替代 define构造(至少我知道在 C/++ 的 GCC 编译器前端)。

最明显的解决方案是 grep您的 foobar 代码,不区分大小写。使用结果构建一个包含所有可能的 foobar shell 的表格,以及

  • 将它们全部更正为一个一致的大小写
  • 创建一个预处理器文件,为所有情况重新定义。

  • 在后面的解决方案中,你不需要用这个污染一些人类可读的代码 - 只需机器生成一个 FixFooBar.h文件中包含这些重新映射,并在需要的地方包含它。

    关于c-preprocessor - 不区分大小写#define,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7220002/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com