Cel*_*tas 2 c java language-agnostic variables macros
在课堂上,教授说他比C更喜欢C的一个原因是C有一个预处理器,特别是宏.使用所需的值声明final
/ const
变量对宏有什么好处?我知道Java没有全局变量,所以是否会出现使用变量替换宏的情况不起作用的情况?
在C中使用宏系统一直是一个长期存在的传统,经常导致难以理解的构建链,以及非常项目特定的构建配置.我认为C中存在宏的原因是为了克服它作为一种语言的缺点,当你需要宏提供的东西时(例如,你可以在Java中使用接口来解决需要制作的问题)通用的"实例".
尽管如此,有时候宏观系统似乎更容易适应问题.我知道有些商店会这样做 - 例如 - 当他们需要支持多个不同版本的API时.通常,您可以通过在设计中正确使用接口和良好的抽象层来克服Java中的这个问题.但是,那里有Java的宏系统!如果你愿意,你可以使用它们.你可能还会注意到,就宏来说,C宏并不是什么特别的东西.
(在我看来,你的老师有点偏离......)