【发布时间】:2015-04-20 11:11:43
【问题描述】:
有谁知道为什么这个代码变体在 Visual Studio 2010 下编译和运行
#include <stdio.h>
char *myfunc(char *c, int i) {
c[0] = (char)i;
c[1] = 0;
return c;
}
int main(void) {
char str[5]; //////////////////////////////
char *(*fun)(char *, int);
fun = myfunc;
puts(fun(str, 51));
getchar();
return 0;
}
但是这个没有
#include <stdio.h>
char *myfunc(char *c, int i) {
c[0] = (char)i;
c[1] = 0;
return c;
}
int main(void) {
char *(*fun)(char *, int);
fun = myfunc;
char str[5]; //////////////////////////////
puts(fun(str, 51));
getchar();
return 0;
}
第二个变体返回这些错误
错误 C2143:语法错误:缺少 ';'在“类型”之前
错误 C2065:“str”:未声明的标识符
无论哪种方式使用 mingw gcc 都可以正常工作。
【问题讨论】:
-
或者升级到符合标准的C编译器...
标签: c visual-studio-2010