c# - #定义从C到C#的转换

标签 c# c macros

这是C代码吗:

/* LERP(a,b,c) = linear interpolation macro, is 'a' when c == 0.0 and 'b' when c == 1.0 */
#define LERP(a,b,c)     (((b) - (a)) * (c) + (a))

http://www.brucelindbloom.com/index.html?Eqn_XYZ_to_T.html

等于此 C# 代码?

private static double LERP(double a, double b, double c) { return (((b) - (a)) * (c) + (a)); }

?

最佳答案

没有。 考虑以下几点:

LERP(x++,1,2);

C 代码也可能有增加 x 两次的副作用[@phresnel 提到它是未定义的],而 c# 代码是完美定义的,并且只会增加 x 一次。

结果也可能不同,因为第一个 a 和第二个 [在宏中] 可能有不同的值,因为它可能在第一个中增加了。

关于c# - #定义从C到C#的转换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7229865/

相关文章:

c++ - 使用 Win32 应用程序在 Windows 7 中禁用 CONTROL + ALT + DELETE 和 Windows(win) 键

c - 在 VGA 模式下绘制一个字符

ios - 如果 Macro 设置为 1,则排除目标中的类

c - x86 程序集 : Using #define'd constants as arguments in calls to to #define's macros

c++ - #define myptr int * 有什么问题?

c# - 如何在不创建新类的情况下将简单的 JSON 对象发送到 ASP.NET?

c++ - 编码 x264(libx264) 原始 yuv 帧数据

c# - 为什么我的验证事件没有在 C# 中触发?

c# - 为什么 Array.Copy 支持长参数

c# - WPF 按钮隧道化 OnClick 事件