为什么宏的计算方式与 const int 不同?

问题描述 投票:0回答:1

我正在使用 MPLAB IDE 用 C 语言编写 dspic33 微控制器的代码。

这 2 个代码段为 pwmOut_period 提供了不同的值。使用 const long 时,它可以正常工作,但使用宏时,它会给出错误的值。这是为什么?

const long PWM_FREQ = 25000; //Frequency of output PWM Voltage and Temp 
const long PWM_CLOCK_FREQ = 500000000; //500Mhz PWM clock inside uC
pwmOut_period = PWM_CLOCK_FREQ / PWM_FREQ;

#define PWM_FREQ 25000 //Frequency of output PWM Voltage and Temp 
#define PWM_CLOCK_FREQ 500000000 //500Mhz PWM clock inside uC
pwmOut_period = PWM_CLOCK_FREQ / PWM_FREQ;
c macros constants
1个回答
1
投票

宏在预处理器中扩展为文字。由编译器决定文字的类型。在这种情况下,我强调,使用的是

int
类型。除以两个
int
可能会得到与除以
long
不同的值。

© www.soinside.com 2019 - 2024. All rights reserved.