0

我四处搜寻,但没有找到任何有关此错误的有价值信息。

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.

4

3 回答 3

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" };
于 2013-05-29T00:45:04.760 回答
0

解决方案是使用int而不是unsigned short用于初始化 unicode 字符串。

于 2013-05-29T01:26:51.260 回答
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!
于 2020-10-16T10:28:41.973 回答