2015-10-06 2 views
0

Итак, я создаю функцию, которая создает таблицу, которая передает значения x и y через уравнение. это то, что у меня есть до сих пор.Ошибка: конфликтующие типы для функции (C)

#include <stdio.h> 
#include <math.h> 
int main(){ 
    int x, y; 
    float num; 

    printf("%3c", '+'); 
    for (x=5; x <= 100;x=x+5){ 
     printf("%8i",x); 
    } 
    printf("\n"); 
    for (y = 5; y<= 100;y=y+5){ 
     printf("%3d ",y); 
     for (x=5;x<=100;x=x+5){ 
      num = theMath(x, y);  
      printf("%7f", num); 
      printf(" ");  
     } 
     printf("\n"); 

    } 
    return 0; 
} 

float theMath(int x, int y){ 
    float sum; 
    sum = ((x*x*x*x)/(y*y)) + sqrt(y); 
    return sum; 
} 

Это говорит мне «Ошибка: Конфликтующие типы для„theMath“», и я не могу понять, почему. Компиляция с gcc.

+0

Как вы это компилируете? – mescarra

+0

Я компилирую с gcc –

+0

Можете ли вы вставить линию gcc (т. Е. 'Gcc test.c -lm -o test.o')? – mescarra

ответ

-1

Добавить определение прототипа (объявление функции) в Math перед его вызовом функции. Это должно быть причиной ошибки.

#include <stdio.h> 
#include <math.h> 

//add declaration of the function here 
float theMath(int x, int y); 
int main(){ 
    int x, y; 
    float num; 

    printf("%3c", '+'); 
    for (x=5; x <= 100;x=x+5){ 
    printf("%8i",x); 
    } 
    printf("\n"); 
    for (y = 5; y<= 100;y=y+5){ 
    printf("%3d ",y); 
    for (x=5;x<=100;x=x+5){ 
     num = theMath(x, y); 
     printf("%7f", num); 
     printf(" "); 
    } 
    printf("\n"); 

    } 
    return 0; 
} 

float theMath(int x, int y){ 
    float sum; 
    sum = ((x*x*x*x)/(y*y)) + sqrt(y); 
    return sum; 
} 
+1

Не мое нисходящее. Тем не менее, ** ** есть _definition_. Он должен добавить _prototype_ _declaration_. Пожалуйста, не путайте эти два условия! Или просто переместите определитель перед использованием функции. – Olaf

+0

oops. пропустил это – woodstok

+0

Нет, это не «определение прототипа» (это будет _definition_ с сигнатурой в стиле прототипа, стандартом, если вы не используете дополнительное объявление, а просто определите (что подразумевает объявление) функцию перед ее использованием. – Olaf

0

Ваша функция theMath используется перед тем, как определено, и он не объявлен перед использованием. Вам просто нужно объявить функцию в начале вашего файла C:

float theMath(int x, int y); 
Смежные вопросы