#define MHZ *1000000l
#define MSEC /1000l


这就是功能定义

unsigned int SysTick_Config(unsigned int ticks)
{
  if (ticks > SysTick_LOAD_RELOAD_Msk)
  return (1);   // Reload value impossible

  STRELOAD = (ticks & SysTick_LOAD_RELOAD_Msk) - 1; // set reload register

  return (0);  // Function successful
}


该函数如下所述被调用

 SysTick_Config(96MHZ * 2.5MSEC);


我的疑问是使用的宏。写96MHZ是否意味着它被(96 * 1000000l)取代了? 96乘以1000000吗?
 另外,#define MSEC / 1000l中的/ 1000l是什么意思?为什么是/用过的。

我正在使用IAR嵌入式工作台

最佳答案

在像这样的数字旁边使用宏时,数字和宏之间必须有空格。在这种情况下,您应该会看到编译器错误。

/1000l可以简单地除以1000。

关于c - 对C语言中的宏的怀疑,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30432909/

10-12 02:08