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

7rfyedvj  于 10个月前  发布在  其他
关注(0)|答案(1)|浏览(87)

我正在使用MPLAB IDE用C编写dspic33微控制器的代码。
这两段代码给予不同的dummOut_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;

字符串

knpiaxh1

knpiaxh11#

宏在预处理器中被扩展为文字。无后缀的整数文字的类型为intlong intlong long int,这取决于值可以容纳的最小类型。
在这种情况下,我提出,int类型被使用。两个int s的划分可能会导致不同的值,而不是划分两个long s。

相关问题