error C2628: followed by 'char' is illegal (did you forget a ';'?)

本文介绍了 C++ 编译时出现的错误 C2628 的解决办法,该错误通常由于类定义末尾遗漏了分号导致。文章通过实例解释了如何排查和修正此类问题。

error C2628: followed by 'char' is illegal (did you forget a ';'?)

 

出现如上的错误,

查找csdn

5 楼jiangsheng(蒋晟.Net[MVP])回复于 2005-01-24 01:02:15 得分 20

包含的最后一个头文件末尾如果有语法错误的话,有可能造成第一行可执行代码编译出错。

 

发现确实如此,在最后一个#include 的文件里面

定义class最后没有加上分号。

造成这种错误。

注意注意。

### 问题分析 在VC6中,`long long`类型并不被支持。这是因为VC6的编译器是基于C90标准开发的,而`long long`类型是在C99标准中引入的[^1]。因此,在使用`long long`时会触发错误`error C2632: 'long' followed by 'long' is illegal`。 为了在VC6中表示更大的整数类型(如64位整数),需要采用替代方案。以下是几种解决方案。 --- ### 解决方案 #### 1. 使用`_int64`类型 Microsoft为VC6提供了一个特定的类型`_int64`,用于表示64位有符号整数。对应的无符号类型为`unsigned __int64`。以下是一个示例代码: ```c #include <stdio.h> int main() { __int64 a = 123456789; printf("Hello World!, %I64d\n", a); return 0; } ``` 注意:格式化输出时,需要使用`%I64d`或`%I64u`来分别表示有符号和无符号的64位整数[^2]。 --- #### 2. 使用宏定义替代`long long` 可以通过宏定义的方式模拟`long long`的行为,以便在其他支持C99标准的编译器中保持代码兼容性。例如: ```c #ifndef _MSC_VER typedef long long TSint64; typedef unsigned long long TUint64; #else typedef __int64 TSint64; typedef unsigned __int64 TUint64; #endif int main() { TSint64 a = 123456789; printf("Value: %I64d\n", a); return 0; } ``` 这种方式确保了代码在不同编译器之间的可移植性[^3]。 --- #### 3. 使用第三方库 如果需要更复杂的64位整数操作,可以考虑使用第三方库(如GMP)。虽然这种方法在VC6中可能较为复杂,但它提供了更强的跨平台支持。 --- #### 4. 升级编译器 如果条件允许,建议升级到更高版本的Visual Studio(如VS2019或更高版本)。这些版本完全支持C99标准,可以直接使用`long long`类型而无需额外修改代码。 --- ### 示例代码 以下是一个完整的示例代码,展示了如何在VC6中正确使用64位整数: ```c #include <stdio.h> int main() { __int64 sum = 0; int n, i; printf("n="); scanf("%d", &n); while (n) { for (i = 1; i <= n; i++) { sum += i; } printf("sum=%I64d\n", sum); printf("n="); scanf("%d", &n); } return 0; } ``` --- ### 注意事项 - 在VC6中,`%I64d`是必须使用的格式说明符,否则会导致运行时错误。 - 如果需要更高的兼容性,可以结合宏定义和条件编译技术。 - 避免直接使用`long long`,除非目标编译器明确支持C99标准。 ---
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值