从 #define 中的数组获取值

Dak*_*ron 1 c arrays c-preprocessor

我在预处理器语句中定义了一个数组,如下所示:

#define myArray {0,1,2,3}
Run Code Online (Sandbox Code Playgroud)

当我尝试从该数组获取值而不先将其实际分配给变量时,如下所示:

myArray[0];
Run Code Online (Sandbox Code Playgroud)

编译器抱怨并且不允许我这样做。

这可能是,因为这也不起作用:

{0,1,2,3}[0]
Run Code Online (Sandbox Code Playgroud)

我该如何解决这个问题?我不想使用多个#define语句,也不想先将数组分配给内存中的变量。

语境

我想为开源微控制器项目实现一个补丁。RAM空间是有限的,并且这里的整个数据流是静态的。

我想遵循配置文件中的代码风格,它使用了很多像上面这样的数组定义。

另一方面,当可以直接完成时,我不想为无用的变量浪费 RAM 空间。

n. *_* m. 7

这可以通过复合文字来完成。

在你的情况下你可以做

#define myArray ((int[4]){1,2,3,4})
Run Code Online (Sandbox Code Playgroud)

我不建议以这种方式使用复合文字。它们不太可能是解决您实际问题的最佳解决方案。