Ожидается, что фрагмент кода Windows не компилируется в Linux; ошибка - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь перенести код 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

...