Я пытаюсь перенести код Windows в Linux, и он не работает со следующей ошибкой.
Ниже приведен фрагмент кода.
#include <stdio.h>
#include <stdint.h>
#include <wchar.h>
#define FW_VERSION_STRING_SIZE 8 // Characters including null.
typedef wchar_t WCHAR;
typedef union _FW_VERSION
{
uint16_t w;
struct
{
uint8_t rev : 4;
uint8_t build : 4;
uint8_t minor : 4;
uint8_t major : 4;
} nib;
} FW_VERSION;
typedef struct _FWV
{
FW_VERSION fwv; // version
WCHAR s[FW_VERSION_STRING_SIZE]; // string
} FWV;
int main()
{
struct
{
FWV lat = {0}; // latest
FWV prv ; // previous
FWV cur; // current
} suFwVersions;
}
Я получаю следующееошибка.
cc /tmp/hello.c -o /tmp/hello
/tmp/hello.c: In function ‘main’:
/tmp/hello.c:34:17: error: expected ‘:’, ‘,’, ‘;’, ‘}’ or ‘__attribute__’ before ‘=’ token
FWV lat = {0}; // latest
^
make: *** [/tmp/hello]
Error 1
Неправильный ли синтаксис в Linux, так как он успешно собирается в Windows.Версия Gcc в Linux - 7.3.1