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 空间。
这可以通过复合文字来完成。
在你的情况下你可以做
#define myArray ((int[4]){1,2,3,4})
Run Code Online (Sandbox Code Playgroud)
我不建议以这种方式使用复合文字。它们不太可能是解决您实际问题的最佳解决方案。