相关疑难解决方法(0)

什么是C宏有用?

我已经写了一点C,我可以很好地阅读它以大致了解它在做什么,但每次我遇到一个宏它都完全抛弃了我.我最终必须记住宏是什么,并在我阅读时将其替换为我的脑袋.我遇到的那些直观且易于理解的东西总是像迷你小功能一样,所以我总是想知道为什么它们不仅仅是功能.

我可以理解在预处理器中为调试或跨平台构建定义不同构建类型的需要,但是定义任意替换的能力似乎只对使得已经很难理解的语言更加难以理解.

为什么为C引入了如此复杂的预处理器?并且有没有人有一个使用它的例子,这将使我理解为什么它似乎仍然用于除了简单的#debug风格条件编译之外的目的?

编辑:

读了很多答案之后我还是不明白.最常见的答案是内联代码.如果内联关键字没有这样做,那么它有充分的理由不这样做,或者实现需要修复.我不明白为什么需要一个完全不同的机制,这意味着"真正内联这个代码"(除了形成内联之前编写的代码).我也不明白提到"如果它太愚蠢而不能被赋予功能"的想法.当然,任何需要输入并产生输出的代码都最好放在一个函数中.我想我可能没有得到它,因为我不习惯编写C的微观优化,但预处理器只是对一些简单问题的复杂解决方案.

c macros language-features language-design c-preprocessor

72
推荐指数
9
解决办法
4万
查看次数

-7
推荐指数
1
解决办法
64
查看次数