gpt4 book ai didi

c - 特定于函数的 C 宏是否应该在函数范围内定义和取消定义?

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:42 27 4
gpt4 key购买 nike

我想知道除了样式偏好之外是否还有其他原因来定义和取消定义特定于 C 函数范围内的函数的宏。

例如:

static float pay(float hours)
{
#define REG_PAY_HOURS 40.0
#define REG_PAY_RATE 15.0
#define OT_PAY_RATE (1.5 * PAY_RATE)

if(REG_PAY_HOURS >= hours)
{
return(hours * REG_PAY_RATE);
}
else
{
return((REG_PAY_HOURS * REG_PAY_RATE) + ((hours - REG_PAY_HOURS) * OT_PAY_RATE));
}

#undef OT_PAY_RATE
#undef REG_PAY_RATE
#undef REG_PAY_HOURS
}

对比

#define REG_PAY_HOURS 40.0
#define REG_PAY_RATE 15.0
#define OT_PAY_RATE (1.5 * PAY_RATE)
static float pay(float hours)
{
if(REG_PAY_HOURS >= hours)
{
return(hours * REG_PAY_RATE);
}
else
{
return((REG_PAY_HOURS * REG_PAY_RATE) + ((hours - REG_PAY_HOURS) * OT_PAY_RATE));
}
}
#undef OT_PAY_RATE
#undef REG_PAY_RATE
#undef REG_PAY_HOURS

谢谢

最佳答案

不,除了风格选择之外没有其他原因。

预处理器不知道该函数,它不会在该级别解析 C。

我会说 #undef:ing 宏有点少见,但更清楚地表明宏是本地的当然是个好主意。

关于c - 特定于函数的 C 宏是否应该在函数范围内定义和取消定义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40959854/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com