我正在尝试将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