error C2146: 语法错误: 缺少“;”(在标识符“WINAPI”的前面) 及 “error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int” 解决方案

在VS里字定义了一个工程,添加了一个CPP和H,编译时出现了以下奇怪的错误:

1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(30): error C2146: 语法错误: 缺少“;”(在标识符“WINAPI”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(30): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(30): error C2146: 语法错误: 缺少“;”(在标识符“CreateToolhelp32Snapshot”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(30): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(31): error C2065: “DWORD”: 未声明的标识符
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(31): error C2146: 语法错误: 缺少“)”(在标识符“dwFlags”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(31): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(33): error C2059: 语法错误:“)”
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(64): error C2146: 语法错误: 缺少“;”(在标识符“dwSize”的前面)
1>c:\program files (x86)\microsoft sdks\windows\v7.0a\include\tlhelp32.h(64): error C4430: 缺少类型说明符 - 假定为 int。注意: C++ 不支持默认 int


像这样的问题一般一般是由于头文件包含引起的错误。

在CPP的最前面包含 windows.h问题就解决了。为什么会想到这一点呢?同样的CPP和H,在另一个工程里可用,而在这里不能用。对比发现可用的那个工程里,该CPP包含了STDAFX.H,而STDAFX.H里包含了window.h。


话说windows.h 怎么就那么重要呢,不包含,还不让编译通过。打开windows.h,里面全部是头文件包含。VS已经帮我们定义好了在window平台上开发程序所需的头文件和顺序。

以后进行windows编程的时候记得包含就行了。


再来看下stdafx.h,包含可是很标准的哟

// stdafx.h : 标准系统包含文件的包含文件,
// 或是经常使用但不常更改的
// 特定于项目的包含文件
//

#pragma once

#include "targetver.h"

#include <stdio.h>
#include <tchar.h>



// TODO: 在此处引用程序需要的其他头文件
#include <windows.h>

这个顺序要记住啦。。。




  • 3
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
### 回答1: 这个错误提示意味着你在声明变量时没有指定变量的类型,而 C++支持默认类型int。因此,编译器无法确定变量的类型,从而导致了错误。 要解决这个问题,你需要在声明变量时显式地指定变量的类型。例如,如果你想声明一个整数变量,应该这样写: ``` int myInt; ``` 如果你想声明一个浮点数变量,应该这样写: ``` float myFloat; ``` 如果你已经指定了变量的类型,但仍然收到此错误提示,那么可能是因为你的代码中存在语法错误或拼写错误。你可以检查一下代码中是否有这样的问题。 ### 回答2: error c4430是指在C语言编译器中出现了缺少类型说明符的错误,提示假定int类型。需要注意的是,C语言不支持默认int类型,因此如果在代码中没有显式地声明变量类型,编译器会报出这个错误。 这个错误通常出现在以下两种情况下: 1. 变量没有声明类型 在C语言中,定义一个变量必须先声明它的类型。如果一个变量没有声明类型,编译器就无法识别它的类型,在编译时就会出现error c4430错误。 例如: x = 10; 这段代码就会出现error c4430错误,因为x没有声明类型。 要解决这个错误,我们需要在定义变量时同时声明它的类型,例如: int x = 10; 2. 头文件顺序问题 另一种情况是,在头文件中定义变量时,如果头文件的顺序不正确,就会导致编译器无法找到变量的定义,从而产生error c4430错误。 例如: #include "b.h" #include "a.h" 这种情况下,如果变量在b.h中定义而在a.h中使用,就会出现error c4430错误。 要解决这个问题,我们需要将头文件包含的顺序调整正确,将使用的头文件放在前面,定义的头文件放在后面,如下所示: #include "a.h" #include "b.h" 总之,出现error c4430错误时,需要仔细检查代码中的变量声明和头文件的顺序,保证变量都被正确声明并且头文件顺序正确。 ### 回答3: error c4430: 缺少类型说明符 - 假定int。这个错误提示是在C++编译过程中出现的,它表明在代码中缺少类型说明符,导致编译器无法识别其类型,因而会默认int类型。所以我们需要在代码中添加类型说明符,以便编译器正确识别。 需要注意的是,C语言并不支持默认int类型,这是与C++语言不同的地方。在C中,如果我们没有显式地指定变量的类型,编译器会默认为未定义类型,这将导致编译错误。而在C++中,如果我们没有显式指定变量类型,编译器会默认int类型,这就是为什么我们会看到这个错误提示。 为了解决这个错误,我们应该检查代码中是否有缺少类型说明符的情况,并为这些变量添加适当的类型说明符。如果代码中使用了大量的变量而没有指定类型,可以考虑在头文件中定义一个结构体,将这些变量作为结构体的成员,这样可以统一管理,并且可以避免出现类型错误。 在C++中,我们可以使用auto关键字来实现自动类型推断,这样可以避免一些类型错误,但需要注意的是,auto并不适用于所有情况,有些类型必须我们手动指定。 总之,解决error c4430错误,需要引起我们重视和审慎处理,要深入分析代码,增加类型说明符,并严格遵守C++语法规范,这样才能避免出现类似错误。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值