代码之家  ›  专栏  ›  技术社区  ›  Andreas

如何抑制C++关键字?

c++
  •  2
  • Andreas  · 技术社区  · 6 年前

    我正在生成C++代码,当从中生成的模型的属性与C++关键字冲突时,会遇到问题。我更希望模型保持语言不可知。

    我试过一些 #define int ReSeRvEd_int -黑客对生成的代码进行局部攻击,但分配其他符号感觉是错误的——问题并没有真正消失,而且无论哪种情况,生成的代码和模型之间的交叉引用都变得更加困难。

    有没有关于如何抑制/隐藏关键字的建议?

    1 回复  |  直到 6 年前
        1
  •  7
  •   Sneftel    6 年前

    我可以想出几种方法:

    • 为所有生成的令牌添加标准前缀或后缀。而不是名为“steve”和“int”的属性生成名为 steve int 它们将分别产生 prop_steve prop_int .
    • 强制生成的代币大写。

    我想做的两件事 做:

    • 尝试使用名为 智力 ,就像你在上面尝试的那样。这不仅违反了最小惊讶原则,而且是不合法的。
    • 进行硬编码的重新映射,例如从“int”到 innt .丑陋、不一致和(假设生成的代码与用户编写的代码接口)迫使用户记住重新映射。