【发布时间】:2016-06-11 16:58:41
【问题描述】:
我正在尝试编写一个 VB.NET 程序来处理很多小操作,我真的很想念可以在 C/C++ 中使用的#define 宏。
是否有可能定义预处理器宏。例如,
#define MAX(x,y) ((x) > (y) ? (x) : (y))
上面将在运行时替换函数替换 C 中的令牌。是否可以在 VB.NET 中做同样的事情。
我不想编写函数,因为对我来说速度是关键,我无法承受将函数压入堆栈以完成小而重复的任务。
【问题讨论】:
-
非常感谢马克。你的链接真的很有用!
-
任何人都没有正当理由用 C 或 C++ 编写该宏。因此,您不会因为无法在 VB.NET 中做到这一点而失去任何东西。
-
@Cody Gray。在我看来,这些实际上很有用,因为当您需要重复的一行语句时它们增加了代码的可读性,但不会花费与函数调用和返回相同的性能。查看 Stockfish 或 Crafty 国际象棋引擎的源代码,看看它们有多大用处。
-
任何值得使用的 C 或 C++ 编译器都支持内联函数,它为您提供了所有的好处而没有任何缺点。您所说的那些引擎要么是 20 年前编写的,当时内联函数不可用,要么作者几乎在同一时间学习 C 并且没有费心更新他们的知识。像这样调用一个简单的函数是免费的。你甚至不需要
inline关键字;编译器知道的足够多,可以自行内联。
标签: vb.net preprocessor directive