2016-11-08 2 views
0

Ich versuche 2 Parameter zu senden (ein Schwimmer und eine Reihe von Hin- und Herbewegungen) auf eine Funktion in C.Wie ein Schwimmer-Anordnung und einen Schwimmer als Parameter an eine Funktion in C passieren

Ich bin diesen Fehler:

test.c:10:1: error: conflicting types for ‘result’ 
result(float *array, float number){ 
^ 
test.c:10:1: note: an argument type that has a default promotion can’t match an empty parameter name list declaration 
test.c:7:5: note: previous implicit declaration of ‘result’ was here 
    result(array, number); 

Mein Code ist:

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

main() 
{ 
    float array[3] = {1.5, 2.6, 3.7}; 
    float number = 2.3; 
    result(array, number); 
} 

result(float *array, float number) 
{ 
    printf("number: %f\n", number); 
    printf("array 1: %f\n", array[1]); 
} 

ich bin neu in C und wissen, dass in anderen Sprachen thi s würde funktionieren, also jede Hilfe auf, was man hier tut, würde sehr geschätzt werden!

+5

Setzen Sie die 'result' Definition oben' main'. Oder deklariere dort seinen Prototyp. In C müssen Deklarationen vor ihrer ersten Verwendung kommen. Andernfalls nimmt der Compiler einige Standardwerte an, die oft nicht das sind, was Sie wollen (z. B. Parameter sind Ganzzahlen). – kaylum

+0

Beachten Sie, dass Vor-Standard C und C90 schlampig waren, dass Funktionen vor der Verwendung ohne eine Deklaration oder Definition aufgerufen werden können, während C99 und C11 dies nicht zulassen. Aufgrund der Standard-Heraufstufungsregeln, die ein 'float' in ein' double' in einer Funktionsparameterliste umwandeln, hätte es jedoch Probleme in einer einzelnen Datei selbst in C90 gegeben. (Vor-Standard C hätte die Prototypnotation in der Funktionsdefinition nicht erlaubt, also hätte es dort kein Problem gegeben - aber der Code wäre auch anders gewesen.) –

Antwort

2

Sie können nicht auf Funktionen zugreifen, die nach main ohne einen Prototyp deklariert wurden. Umschreiben Sie den Code wie folgt aus:

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

int result(float *, float); 

int main() 
{ 
    /* ... */ 
} 

int result(float *array, float number) 
{ 
    /* ... */ 
} 
3

Der Code ist dies: `

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

void result(float array[3], float number){ 
    printf("number: %f\n", number); 
    printf("array 1: %f\n", array[1]); 
} 

main(){ 
    float array[3] = {1.5, 2.6, 3.7}; 
    float number = 2.3; 
    result(array, number); 
} 

`

Verwandte Themen