gpt4 book ai didi

c - GCC 与 MSVC 编译器

转载 作者:太空宇宙 更新时间:2023-11-04 06:32:10 24 4
gpt4 key购买 nike

我想问为什么 GCC 编译我的 C 代码时它有错误,MSVS 注意到了这一点。我已经找到解决这些错误的方法。但我想知道,为什么 GCC 没有看到它们。这是我的代码:

#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", &amplitude);
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", &amplitude);
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 与 MSVC 编译器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19412199/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com