使用stdlib.h或stdio.h中的某些函数会导致语法错误。

3

我正在Win7 Pro x64的Visual Studio 2005中编写一些C代码。这些代码在Eclipse下的MinGW上编译和运行是正确的。然而,使用标准C库(例如stdio或stdlib)的某些函数会导致代码在VS2005中构建时出现语法错误。以下是一个例子:

#include<time.h>
#include<stdlib.h>
#include<stdio.h>
#include"someOtherHeader.h"

int main(void){
    srand((unsigned int) time(NULL));
    double start;
.
.
.

以下代码不重要。VS2005提示"type"前缺少分号。注释掉srand()可以解决这个问题。奇怪的是,之后调用rand()时没有问题。我还注意到了exit()和fprint()的行为。但对于malloc()没有这种情况。你有什么想法吗?
2个回答

10

在Visual Studio中使用C语言会将编译器置于严格模式(即旧版的C语言模式)。所有变量声明都必须在代码块的开头:

#include<time.h>
#include<stdlib.h>
#include<stdio.h>
#include"someOtherHeader.h"

int main(void){
    double start;
    srand((unsigned int) time(NULL));
    .
    .
}

0

Visual Studio 支持但不完全符合 C99 标准


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接