如果我想修改或添加我自己的 C 扩展,并将它们添加到 GCC C 编译器,我需要做什么?我不想提议对语言进行更改,我想知道 C 编译器实际上是如何工作的。
我查看了 GCC 的源代码,它看起来好像 Objective-C 被实现为一个简单的解析器,它生成引用修改后的运行时库的代码,然后对于基于 C 的所有内容,它使用常规C 编译器。我没有深入研究它,所以我可能不在正确的轨道上。
例如,我想在 Objective-C 中添加我自己的关键字,只是为了好玩。我想添加一些看起来很容易实现的东西,比如也许@assert
. 我想要的只是@assert
调用一个我将添加到 Objective-C 运行时的函数:
objc_runtime_assert (__FILE__, __LINE__, expression, "string version of expression");
显然,无论如何我都可以将其实现为函数调用和宏,但我想了解 C 源代码的解析和编译阶段,也许我可以将自己的扩展添加到语言中以供自己使用。
我看过的源代码一直是指“树”,并且有很多很多宏可以执行操作或从这些树中获取信息。
是否有任何文档可以深入解释这类事情?