我试图执行以下操作但收到以下错误:
"错误:
{令牌之前的预期表达
Test_Stubs.h
#define SIGNATURE 0x78,0x9c
Run Code Online (Sandbox Code Playgroud)
TEST.C
#include "Test_Stubs.h"
static unsigned myArray[100];
static void
setup(void)
{
myArray = {SIGNATURE};
}
Run Code Online (Sandbox Code Playgroud)
编辑
关注问题:
有没有办法在#definemyArray的特定索引中分配单个值?例如...
#include "Test_Stubs.h"
static unsigned myArray[100];
static void
setup(void)
{
myArray[0] = SIGNATURE[0]; //0x78
myArray[1] = SIGNATURE[1]; //0x9c
}
Run Code Online (Sandbox Code Playgroud)
显然,上面的代码不会编码,因为SIGNATURE既不是数组也不是指针.
根据C语法规则,您只能在定义时使用括号括起初始化列表初始化数组.
之后,您必须使用循环逐个元素地初始化,或者,如果您需要将所有元素初始化为相同的值,您可以考虑使用memset().
编辑:
不,正如我在评论中提到的,根据您的代码片段,SIGNATURE既不是数组名称,也不代表任何数组类型,因此您无法对其进行索引.
但是,使用复合文字(在上面和上面C99),如果你改变了#define,那么,不知何故,你可以使这个工作.例如,请参阅以下代码,
#include <stdio.h>
#define SIGNATURE ((unsigned [100]){0x78,0x9c})
static unsigned myArray[100];
int main (void)
{
myArray[0] = SIGNATURE[0]; //0x78
myArray[1] = SIGNATURE[1]; //0x9c
return 0;
}
Run Code Online (Sandbox Code Playgroud)
看到 LIVE VERSION