为什么代码可以在MinGW里运行却不能在MSVC里运行?

来源:5-5 案例:实现 PRINTLNF

慕容1757090

2020-12-07

49 void HandleVara(int arg_count, ...){
50  va_list args;
51  va_start(args, arg_count);
52  for (int i = 0; i<arg_count; i++){
53    int arg = va_arg(args,int );
54    printf("%d: %d\n",i,arg);
55 }
56  va_end(args);
57 }

[ Build | test | Debug ]================
E:\clion\bin\cmake\win\bin\cmake.exe --build D:\clionworkshop\test\cmake-build-debug --target test
Scanning dependencies of target test
[ 33%] Building C object CMakeFiles/test.dir/main.c.obj
main.c
D:\clionworkshop\test\main.c : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失
D:\clionworkshop\test\main.c(50) : error C2143: 语法错误 : 缺少“)”(在“&”的前面)
D:\clionworkshop\test\main.c(50) : error C2143: 语法错误 : 缺少“{”(在“&”的前面)
D:\clionworkshop\test\main.c(50) : error C2059: 语法错误:“&”
D:\clionworkshop\test\main.c(50) : error C2059: 语法错误:“)”
D:\clionworkshop\test\main.c(51) : error C2059: 语法错误:“for”
D:\clionworkshop\test\main.c(51) : error C2143: 语法错误 : 缺少“{”(在“<”的前面)
D:\clionworkshop\test\main.c(51) : error C2059: 语法错误:“<”
D:\clionworkshop\test\main.c(51) : error C2143: 语法错误 : 缺少“{”(在“++”的前面)
D:\clionworkshop\test\main.c(51) : error C2059: 语法错误:“++”
D:\clionworkshop\test\main.c(51) : error C2059: 语法错误:“)”
D:\clionworkshop\test\main.c(55) : error C2143: 语法错误 : 缺少“)”(在“=”的前面)
D:\clionworkshop\test\main.c(55) : error C2373: “args”: 重定义;不同的类型修饰符
D:\clionworkshop\test\main.c(49) : 参见“args”的声明
D:\clionworkshop\test\main.c(55) : error C2059: 语法错误:“)”
D:\clionworkshop\test\main.c(55) : warning C4047: “初始化”:“int”与“va_list”的间接级别不同
D:\clionworkshop\test\main.c(56) : error C2059: 语法错误:“}”
NMAKE : fatal error U1077: “D:\vs2013workshop\VC\bin\amd64\cl.exe”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “D:\vs2013workshop\VC\BIN\amd64\nmake.exe”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “D:\vs2013workshop\VC\BIN\amd64\nmake.exe”: 返回代码“0x2”
Stop.
NMAKE : fatal error U1077: “D:\vs2013workshop\VC\BIN\amd64\nmake.exe”: 返回代码“0x2”
Stop.

写回答

1回答

bennyhuo

2020-12-07

D:\clionworkshop\test\main.c : warning C4819: 该文件包含不能在当前代码页(936)中表示的字符。请将该文件保存为 Unicode 格式以防止数据丢失


你代码里面有中文吧。把文件编码改成 gbk 在 msvc 下运行。

1
1
慕容1757090
谢谢,已经可以运行
2020-12-07
共1条回复

C语言系统化精讲 重塑编程思想 打造坚实的开发基础

如果通向大牛的道路有捷径,那就是先学好C语言

2208 学习 · 853 问题

查看课程