Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/65.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
GCC与MSVS编译器_C_Visual Studio 2010_Gcc - Fatal编程技术网

GCC与MSVS编译器

GCC与MSVS编译器,c,visual-studio-2010,gcc,C,Visual Studio 2010,Gcc,我想问一下,为什么GCC编译了我的C代码,而它却有错误,MSVS注意到了这一点。我已经找到了解决这些错误的方法。但我想知道,为什么GCC没有看到他们。这是我的密码: #define _USE_MATH_DEFINES #include <stdlib.h> #include <stdio.h> #include <math.h> #include <time.h> #include <stdlib.h> double randome

我想问一下,为什么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;
}
定义使用数学定义
#包括
#包括
#包括
#包括
#包括
双随机数发生器(双随机数)
{
双随机;
如果(随机数!=0)
{
整数=随机数*1000000;
int base=rand()%integeranditude;
随机=(2*(基数/1000000.0))-随机度;
printf(“%lf\n”,随机);
}
其他的
{
随机=0.0;
}
返回随机;
}
无效计数文件(双x、双周期、双表达式、双振幅、双随机、双随机)
{
文件*wyniki=fopen(“wyniki.txt”、“wt”);

对于(x=0;x这将不会在MSVS中编译,因为它在语句后包含一个声明。MSVS基于早期版本的C,不允许这样做。gcc基于更高版本的C,支持这样做

int main(void)
{
    srand (time(NULL));
    double x, period, expression, amplitude, randitude, random;

我相信MSVS是基于C89的,这项功能是在C99中引入的。如果我错了,毫无疑问会有人纠正我。

这不会在MSVS中编译,因为它在语句后包含声明。MSVS基于早期版本的C,但不允许这样做。gcc基于更高版本的C,它支持这一点

int main(void)
{
    srand (time(NULL));
    double x, period, expression, amplitude, randitude, random;

我相信MSV是基于C89的,这项功能是在C99中引入的。如果我错了,毫无疑问会有人纠正我。

发布特定的错误消息可能会有所帮助啊,我在一条语句后看到了一条声明。也许你的问题是Microsoft编译器不支持C99。MSV陷入了黑暗时代,gcc不支持。发布特定的错误消息可能会有所帮助啊,我在一个声明后看到了一个声明。也许你的问题是Microsoft编译器不支持C99。MSV被困在黑暗时代,gcc不是。实际上它编译得很好,在Microsoft(R)上试用过VS2010附带的适用于80x86的32位C/C++优化编译器版本16.00.30319.01。@LuizFelipe好的,可能OP的编译器已过期。您是否将其保存为.C文件或.cpp文件,这会产生影响。是的,您是正确的,C编译器卡在C89上,但cpp编译器没有,您可以强制它使用cpp编译器。cpp编译器部分支持C++ 11,但正在改进。这里给出了一个很好的解释,这是C,编译它是C++的一种狡猾的动作。但是MSVS 2012/2013终于允许了。实际上它编译得很好,在微软(R)上尝试过。VS2010附带的适用于80x86的32位C/C++优化编译器版本16.00.30319.01。@LuizFelipe好的,可能OP的编译器已过期。您是否将其保存为.C文件或.cpp文件,这会产生影响。是的,您是正确的,C编译器卡在C89上,但cpp编译器没有,您可以强制它使用cpp编译器。cpp编译器部分支持C++ 11,但正在改进。这里给出了一个很好的解释,这意味着C,编译它作为C++是一个狡猾的动作。但是MSV 2012/2013最终允许这样做。