我想知道除了樣式偏好之外是否還有另一個原因來定義和取消定義C函數範圍內函數的特定宏。是否應該在函數的範圍中定義和取消定義特定於函數的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
感謝
預處理程序沒有範圍。這是同一件事。 –
一些編碼標準,例如谷歌編碼標準,建議這樣做以避免碰撞。我認爲這取決於使用情況:如果您希望這些宏是可配置的參數,那麼將它們移動到文件頂部會更方便。 – user3528438
對「PAY_RATE」的引用實際上應該是「REG_PAY_RATE」嗎? –