首页 > C/C++语言 > C/C++基本语法 > [C语言]变量一定需要定义在程序段头部才能使用
2006
01-07

[C语言]变量一定需要定义在程序段头部才能使用

我想大家平时用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)

所以大家以后编程时注意:为了编写可移植的代码,在写代码的时候还是遵循这条标准为好!


[C语言]变量一定需要定义在程序段头部才能使用》有 1 条评论

  1. xstar 说:

    今天在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 );
       }
    }

留下一个回复