将C预处理器用于C以外的语言

use*_*812 16 c-preprocessor

C预处理器的维基百科条目指出:

预处理程序指令的语言与C的语法无关,因此C预处理程序也可以独立用于处理其他类型的文件.

如何才能做到这一点?任何例子或技巧?

编辑:是的,我最感兴趣的是宏观处理.即使它可能不可取或不可维护,但知道什么是可能的仍然是有用的.

kjf*_*tch 19

您可以直接致电CPP:

cpp <file>
Run Code Online (Sandbox Code Playgroud)

而不是通过gcc调用它:

gcc -E filename
Run Code Online (Sandbox Code Playgroud)

请注意,正如同一篇维基百科文章中所提到的,C预处理器的语言并不是真正适用于通用目的:

但是,由于C预处理器不具备某些其他预处理器的功能,例如递归宏,根据引用的选择性扩展,条件中的字符串评估以及图灵完整性,与更通用的宏处理器(如m4)相比,它非常有限.

您是否考虑过使用更灵活的宏处理语言,例如前面提到的m4?

  • 你无法真正拥有CPP的"乐趣".另一方面,m4是一个享受的雷区; 只需要克服最初的痛苦. (6认同)
  • +1表示对"m4"的引用.传统上,这是复杂任务的预处理器; 相比之下,CPP非常原始. (2认同)