我一直在搜索,但我没有找到有关此错误的任何有价值的信息。
typedef struct {
unsigned short string[];
} s;
const s str = {
.string = L"George Morgan"
};
解决方案:
typedef struct {
int string[];
} s;
const s str = {
.string = L"George Morgan"
};
就像int
一样简单。
答案 0 :(得分:3)
前缀为L
的字符串文字存储在wchar_t
数组中,您将修复使用它时观察到的错误。您需要包含标头wchar.h
才能访问它。此外,sizeof(s)
是常量,因此它显然不能依赖于它初始化的字符串。由此可以很容易地看出,您必须提供阵列的范围。
#include <wchar.h>
#define S_STRING_LEN 256
typedef struct {
wchar_t string[S_STRING_LEN];
} s;
const s str = { .string = L"George Morgan" };
答案 1 :(得分:0)
解决方案是使用int
而不是使用unsigned short
来初始化unicode字符串。
答案 2 :(得分:0)
我在Arduino上遇到了以下问题,并找到了解决方案。
struct Mesaj {
byte MakineNo[2] = "1"; //The ERROR POINT
byte Nem[3];
byte Sicaklik[4];
int id;
} mesaj;
解决方案是:
struct Mesaj {
byte MakineNo[2]; // Remove the numbers and
byte Nem[3];
byte Sicaklik[4];
int id;
} mesaj;
*(int*)(mesaj.MakineNo) = 1; //Added here!