首页 > 解决方案 > 在 C 中为特定数组位置创建 MACRO

问题描述

下面的代码(类似版本)有一些问题,我在 C 中为数组的特定位置创建了一个宏。但是,我无法访问宏。

 unsigned int rx_data[2][2];
 #define rx_1_data (rx_data[0]);

    int main()
    {
      if(rx_1_data > 0)
      {
        rx_1_data = 0;
      }
      else
      {
        rx_1_data = 99;
      }
    }

编译器通知我以下错误消息:错误:预期的 ')' before ';' 令牌

有人知道访问 MACRO 中声明的数组的正确方法吗?

标签: carraysmacros

解决方案


C 中的宏使用非常简单的规则进行扩展,因此生成的代码大致如下:

if((rx_data[0]); > 0)

这显然是一个语法错误。使您的宏更小以避免语法问题,例如专门删除不正确的;. #define语句不需要以这种方式终止,它们的处理方式与常规代码不同。

像这样的宏只会让您的代码阅读起来非常令人沮丧。除非必须,否则不要这样做。rx_data[0]甚至没有更多的打字,你在这里什么都没有保存。


推荐阅读