C2061 错误

最近在研究段代码的时候遇到了一个奇怪的问题,经过简化,错误可以用下面的代码表示:

#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的区别

发表评论

电子邮件地址不会被公开。 必填项已用*标注