Jor*_*dan 3 c visual-studio-2010
任何人都可以解释为什么这个代码编译:
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv [])
{
FILE *ptr;
char string[10] = "Testing";
ptr = fopen("C:\\Users\\Jordan\\Desktop\\Hello.txt", "wb");
fwrite(string,sizeof(string[0]), sizeof(string)/sizeof(string[0]), ptr);
}
Run Code Online (Sandbox Code Playgroud)
然而,这不会:给出错误C2065:'string':未声明的标识符
#include <stdio.h>
#include <string.h>
int main (int argc, char *argv [])
{
FILE *ptr;
ptr = fopen("C:\\Users\\Jordan\\Desktop\\Hello.txt", "wb");
char string[10] = "Testing";
fwrite(string,sizeof(string[0]), sizeof(string)/sizeof(string[0]), ptr);
}
Run Code Online (Sandbox Code Playgroud)
我在Windows 7计算机上使用Visual Studio 2010.
谢谢
Visual Studio使用旧的C89/90 C.在旧的C版本中,您不能混合声明和代码.
您的所有声明都必须排在最前面.这就是第二个例子无法编译的原因.
// This a declaration
FILE *ptr;
// This is code
ptr = fopen("C:\\Users\\Jordan\\Desktop\\Hello.txt", "wb");
// This is another declaration. Not Allowed in C89/C90!!!
char string[10] = "Testing";
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
288 次 |
| 最近记录: |