在同一函数中"this declaration ahs no type specifier"和"expected a declaration"错误
"this declaration ahs no type specifier" and "expected a declaration" errors in same function
我有这个代码:
HRESULT __stdcall IDirect3DDevice9Hook::BeginScene()
{
if(dwD3D9DllBaseAddr && dwD3D9DllSize)
{
dwD3DDev = (DWORD)pD3DDevice;
_asm mov eax, dwD3DDev
_asm mov ebx, [eax]
_asm mov eax, [ebx+164]
_asm mov dwTestPtr, eax
if(dwTestPtr < dwD3D9DllBaseAddr || dwTestPtr > (dwD3D9DllBaseAddr + dwD3D9DllSize)) {
FORCE_EXIT( 10 );
}
}
return pD3DDevice->BeginScene();
}
在第5行,它说"这个声明没有存储类或类型说明符",它在FORCE_EXIT(10)中这样说;也在第二个if语句(if(dwTestPtr….)中,它表示"预期一个声明"。他们有什么毛病?
像C或C++这样的语言的"问题"在于语法并不总是唯一的。如果你看第五行,你可能看到了一个作业。但是,如果变量dwD3DDev不存在,编译器实际上可能会看到一个带有初始值设定项的声明,除非该声明没有指定类型。
因此,错误消息并不总是"正确"的,因为它们不是基于您打算做的事情;相反,它们是基于编译器在注意到"嘿,有些地方不太对劲"时的某些内部状态。两者可能并不总是一致的。
因此,您必须在代码的其他地方声明变量(如果它们应该是全局变量或实例变量),或者按照编译器的指示添加类型。
相关文章:
- 在C++中使用 Catch 测试框架编译错误"error: expected ';' at end of declaration list"
- Declaration of IntRect SFML
- 如何区分C++中的"using declaration"和"using directive"?
- 为什么别名声明不是有效的 init 语句(/simple-declaration)?
- 静态数据成员:它"const declaration / constexpr definition"起作用?
- SFINAE:"enable_if cannot be used to disable this declaration"
- 如何理解"abstract-declarator containing an ellipsis shall only be used in a parameter-declaration"
- 如何修复"expected a declaration"?
- C++ 结构数组 - "This declaration has no storage class or type specifier"
- 警告"C++ requires a type specifier for all declaration"地图
- 根据标准,究竟什么是"declaration of an object"
- C++ 中的"this declaration has no storage class or type specifier"错误
- 为什么海湾合作委员会抱怨"declaration of 'foo' shadows a previous call [-Werror=shadow]"
- #define 的"Declaration does not declare anything"错误
- MSVC:带函数的"error C2244: unable to match function definition to an existing declaration"是指专用模板类的类型别名
- 如何修复派生类给出错误'declaration has no storage class or type specifier'?
- "declaration has no storage class or type specifier" C++
- "extern string-literal declaration"功能范围内
- 这个编译器错误是什么意思 - "qualified-id in declaration before ‘=’ token" C++?
- MinGW64和"conflicting declaration of C function int select(...)"