最近在研究段代码的时候遇到了一个奇怪的问题,经过简化,错误可以用下面的代码表示:
#include <stdio.h>
struct stBlockX
{
int value; // Decodes to.
int length; // Length in bits.
unsigned short int code; // 2 byte code (variable length)
} ;
stBlockX m_blocks[1024];
int
main (
IN int Argc,
IN char **Argv
)
{
puts("Hello there fellow Programmer.");
puts("Welcome to the world of EDK II.");
return 0;
}
编译错误是 C2061:
d:\test\AppPkg\Applications\C2061\C2061.c(27): error C2061: syntax error: identifier 'm_blocks'
d:\test\AppPkg\Applications\C2061\C2061.c(27): error C2059: syntax error: ';'
d:\test\AppPkg\Applications\C2061\C2061.c(27): error C2059: syntax error: '['
Building ... d:\test\AppPkg\Applications\Sockets\GetAddrInfo\GetAddrInfo.inf [X64]
NMAKE : fatal error U1077: '"C:\Program Files (x86)\Microsoft Visual Studio 14.0\Vc\bin\x86_amd64\cl.exe"' : return code '0x2'
Stop.
有兴趣的朋友可以先看一下代码猜测一下原因。
经过研究,出现问题是原因是上面的定义出现错误,应该是定义为一种类型,实际上只是定于了一个变量,修改为下面这种就能够通过编译并且正常工作了。
typedef struct
{
int value; // Decodes to.
int length; // Length in bits.
unsigned short int code; // 2 byte code (variable length)
} stBlockX;
stBlockX m_blocks[1024];
参考:
1. https://blog.csdn.net/wangjun_huster/article/details/60480192 type struct 和struct的区别