2017-04-30 3 views
-2

ich diese einfache C++ Programm in Code :: Blocks IDE gemacht:Ist das ein Fehler in "Code :: Blocks" oder ich tue etwas falsch

#include <iostream> 
#include "funct.cpp" 
using namespace std; 

int main() 
{ 
    float a, b; 
    cout << "enter a : "; 
    cin >> a; 
    cout << "enter b : "; 
    cin >> b; 
    cout << "\n\nThe result is: " << funct(a, b) << "\n"; 
    return 0; 
} 

und diese Funktion:

#include <iostream> 

using namespace std; 

float funct(float x, float y) 
{ 
    float z; 
    z=x/y; 
    return z; 
} 

wenn ich die Funktion in der IDE erstellen, indem neue, leere Datei erstellen und versuchen, das Programm bauen sie diesen Fehler zurückgibt:

enter image description here

, aber wenn ich die gleiche Funktionsdatei manuell durch den Texteditor erstelle und in den gleichen Ordner des Projekts lege, funktioniert es gut und der Compiler kann es ohne Fehler erstellen.

Also ist das, weil ich etwas falsch mache oder ist es ein Fehler in der IDE?

Können Sie mir dabei helfen?

und danke im Voraus.

+3

Niemals .cpp-Dateien enthalten. –

+0

also was muss ich tun? –

+0

möglich dupe, [Fehler mit mehreren Definitionen der Funktion] (http://stackoverflow.com/questions/17904643/error-with-multiple-definitions-of-function)? – George

Antwort

1

Sie verwirren das Projekt bis:

1. Sie tun sollten, ist eine Header-Datei function.h oder function.hpp, da die Kopfzeile der Funktion platzieren erstellen

Funktion .h:

float funct(float x, float y); 

dann ein

function.cpp: dass dort, wo die konkrete Umsetzung ist passiert:

float funct(float x, float y) 
{ 
    float z; 
    z = x/y; 
    return z; 
} 

dann sind Sie bereit, dass in einer anderen Datei enthalten:

#include <iostream> 
#include "funt.h" 
using namespace std; 

int main() 
{ 
    float a, b; 
    cout << "enter a : "; 
    cin >> a; 
    cout << "enter b : "; 
    cin >> b; 
    cout << "\n\nThe result is: " << funct(a, b) << "\n"; 
    return 0; 
} 

Sie sicher ein sehen dirty/not_good-practice Version, wo es keine Kopfzeile gibt

In dieser Version ist kein Include erforderlich, aber Sie müssen pr ototype Funktionen, die Sie benötigen

function.cpp: das ist, wo die konkrete Umsetzung geschieht:

float funct(float x, float y) 
{ 
    float z; 
    z = x/y; 
    return z; 
} 

und die Haupt:

#include <iostream> 
using namespace std; 
float funct(float x, float y); 

int main() 
{ 
    float a, b; 
    cout << "enter a : "; 
    cin >> a; 
    cout << "enter b : "; 
    cin >> b; 
    cout << "\n\nThe result is: " << funct(a, b) << "\n"; 
    return 0; 
} 

als Neil Butter oben gesagt, keine CPP-Dateien muss enthalten sein ..

+0

Danke, dass es funktioniert hat. –

0

Keine .cpp-Dateien einschließen. Geben Sie stattdessen eine Vorwärtsdeklaration der Funktion in einer .h- oder .hpp-Datei ein, die wie folgt aussehen würde float funct(float x, float y);, und schließen Sie diese Datei ein.

+0

"Stattdessen eine Vorwärtsdeklaration der Funktion in einer .h oder .hpp" wut? o_O – George

+0

Fügen Sie eine weitere Datei mit dem Namen "funct.h" oder "funct.hpp" hinzu (egal, welche), und setzen Sie einfach "float funct (float x, float y);", dies wird als Forward-Deklaration bezeichnet . Befreien Sie sich von '#include" funct.cpp "' und ersetzen Sie es durch '#include" funct.h "' oder '#include" funct.hpp "' (je nachdem, was Sie getan haben. – Qyriad

Verwandte Themen