我想问为什么GCC编译我的C代码,而它有错误,这是MSVS注意到的。我已经找到了解决这些错误的方法。但我想知道,为什么海合会没有看到他们。这是我的代码:
#define _USE_MATH_DEFINES
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <time.h>
#include <stdlib.h>
double randomer( double randitude)
{
double random;
if(randitude != 0)
{
int integerranditude = randitude*1000000;
int base = rand()%integerranditude;
random = (2*(base/1000000.0)) - randitude;
printf( "%lf\n", random);
}
else
{
random = 0.0;
}
return random;
}
void counttofile(double x, double period, double expression, double amplitude, double random, double randitude)
{
FILE* wyniki = fopen("wyniki.txt", "wt");
for(x = 0; x <= period*M_PI*2; x = x + 0.128)
{
random = randomer(randitude);
expression = amplitude*(sin(x) + cos(x)) + random;
fprintf(wyniki, "(%lf) = %lf\n", x, expression);
/*expression = sin(x) + cos(x) + random;
if(fabs(expression) <= fabs(amplitude))
{
fprintf(wyniki, "(%lf) = %lf\n", x, expression);
}
else
{
fprintf(wyniki, "(%lf) = poza zakresem\n", x);
}*/
}
fclose(wyniki);
}
void unitchange(double period, double amplitude)
{
period = period * 180 / M_PI;
amplitude = amplitude * 180 / M_PI;
}
int main(void)
{
srand (time(NULL));
double x, period, expression, amplitude, randitude, random;
random = 0;
int command;
x = 0;
printf("Co chciałbyś zrobić? \n1. wygenerowac wartosci funkcji sin(x) + cos(x)\n");
printf("2. wygenerowac wartosci funkcji sin(x) + cos(x),\n a nastepnie zaszumic o wskazana amplitude.\n");
printf("Wpisz numer zadania: ");
scanf("%d", &command);
if(command == 1)
{
randitude = 0;
printf("Podam wyniki dzialania sin(x) + cos(x).\nOkresl w jakim zakresie amplitudy mam podac wyniki: ");
scanf("%lf", &litude);
expression = sin(x) + cos(x);
printf("\nIle okresow mam policzyc? ");
scanf("%lf", &period);
unitchange(period, amplitude);
counttofile(x, period, expression, amplitude, random, randitude);
}
else if(command == 2)
{
printf("Podam wyniki dzialania sin(x) + cos(x), zaszumionego o zadana amplitude.\nOkresl w jakim zakresie amplitudy mam podac wyniki: ");
scanf("%lf", &litude);
expression = sin(x) + cos(x);
printf("\nIle okresow mam policzyc? ");
scanf("%lf", &period);
printf("Amplituda szumu ma wynosić: ");
scanf("%lf", &randitude);
unitchange(period, amplitude);
counttofile(x, period, expression, amplitude, random, randitude);
}
else
{
printf("\nNieprawidlowy numer polecenia. Sprobuj jeszcze raz.");
}
int proba = 0;
for(proba =0; proba <=10; proba ++)
{
randomer(randitude);
}
return 0;
}
谢谢你的帮助。
最佳答案
这不会在MSVS中编译,因为它在语句后包含声明。MSVS是基于一个早期版本的C,不允许这样做。gcc基于一个更高版本的C,它确实支持这一点。
int main(void)
{
srand (time(NULL));
double x, period, expression, amplitude, randitude, random;
我相信MSVS是基于C89的,这个特性是在C99中引入的。如果我错了,肯定有人会纠正我的。
关于c - GCC vs MSVS编译器,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/19412199/