我想大家平时用C++用多了可能对C语言有这样一条规定感到有点奇怪了吧!
那大家先编译如下的代码(记住要保存为.c扩展名结尾的文件):
#include “stdio.h”
void print( void );
int main()
{
print();
return 0;
}
void print( void )
{
char *h = “hello”;
printf( “%s “, h );
char *w = “world!”;
printf( “%s\n”, w);
}
然后用VC或BCC编译一下看看!
以下是BCC32 5.8版编译的情况:
Borland C++ 5.8 for Win32 Copyright (c) 1993, 2005 Borland
test.c:
Error E2140 test.c 17: Declaration is not allowed here in function print
*** 1 errors in Compile ***
而将声明放到程序段头部则正常编译通过并执行正常。
还有把扩展名改为CPP也正常。
这是因为
C里面有这样的规定,C++里面没有。
编译器是以扩展名识别是C还是C++的。
C里面声明 在中间 在前面
VC6 出错 正常 (VC6++)
BCC 出错 正常 (Ver 5.8)
GCC 正常 正常 (SunOS 5.8)
ForteC 出错 正常 (SunOS 5.8)
所以大家以后编程时注意:为了编写可移植的代码,在写代码的时候还是遵循这条标准为好!
>> 本文固定链接: http://www.vcgood.com/archives/329
今天在bcc和vc++下测试了如下的代码,可以这样写的!
/* 保存为test.c */
#include <stdio.h>
void print(void);
int main()
{
print();
return 0;
}
void print(void)
{
int i;
i = 1;
printf( “i : %d\n”, i );
for( i = 0; i<10; i++ )
{
int j = 0; /* 要在一段代码的前面 */
printf(“%d : %d\n”, i, j );
}
}