我正在尝试编写一个VB.NET程序,该程序处理许多小位操作,我真的错过了可以在C / C ++中使用的#define宏。
是否有可能定义预处理器宏。例如,
#define MAX(x,y) ((x) > (y) ? (x) : (y))
上面将在运行时替换函数替换C中的标记。是否可以在VB.NET中执行相同的操作。
我不想像我这样编写函数速度是关键,我无法负担在堆栈上推送小而重复的任务的功能。
答案 0 :(得分:0)
根据Mark在评论中的回应,
无法在VB.NET中定义预处理程序指令宏。但是,最接近的选择是定义一个函数并要求编译器对该函数使用Aggressive内联。如果满足某些条件,那么JIT决定将函数内联。 (代码大小< 32字节在函数中...)
.NET version 4.5 及更高版本支持此功能。
Imports System.Runtime.CompilerServices 'This is needed to define the aggressive inlining constant
Class TestClass
<MethodImplAttribute(MethodImplOptions.AggressiveInlining)> 'This will instruct compiler to use aggressive inlining if possible. Should be just before the function definition
Public Function MyFunc(ByVal A As Integer, ByVal B As Integer) As Integer
Return (A * A + B * B + 2 * A * B) 'An example function which should be inlined
End Function
End Class