Windows代码段未在linux中编译;错误

时间:2019-05-24 06:42:49

标签: c linux windows gcc struct

我正在尝试将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中成功构建。 Linux中的Gcc版本是7.3.1

0 个答案:

没有答案