Deklartions und/oder Defintionsfehler (error LNK2019)



  • main

    #include "Header.h";
    
    int main(void) {
    
    	int sum1(int n);
    	int sum2(int n);
    	int n;
    
    	void sum_n(void); {
    		int result;
    
    		cout << "Please enter a natural number: ";
    		cin >> n;
    
    		result = sum1(n);
    		cout << "Sum 1 = " << result << endl;
    
    		result = sum2(n);
    		cout << "Sum 2 = " << result << endl;
    
    
    	}
    
    	int sum1(int n); {
    		int h = 0;
    
    		while (n > 0) { //Aufsummieren ohne Formel
    			h = h + n;
    			n = n - 1;
    		}
    		return h;
    	}
    
    	int sum2(int n); { //Gauss Formel
    		int result;
    		result = n * (n + 1) / 2;
    		return result;
    	}
    }
    

    Header.h

    #include <iostream>
    #include <cstring> 
    #include <string>
    #include <vector>
    #include <map>
    #include <iterator>
    #include <cmath> 
    #include <algorithm>
    #include <fstream> 
    #include <cstddef>
    #include <iomanip>
    #include <complex> 
    #include <thread> 
    
    using namespace std;
    
    Schweregrad	Code	Beschreibung	Projekt	Datei	Zeile	Unterdrückungszustand
    Fehler	LNK2019	Verweis auf nicht aufgelöstes externes Symbol ""int __cdecl sum1(int)" (?sum1@@YAHH@Z)" in Funktion "_main".	Summe n-Zahlen	C:\Users\zjuli\source\repos\Summe n-Zahlen\Summe n-Zahlen\Summe n-Zahlen.obj	1	
    Fehler	LNK2019	Verweis auf nicht aufgelöstes externes Symbol ""int __cdecl sum2(int)" (?sum2@@YAHH@Z)" in Funktion "_main".	Summe n-Zahlen	C:\Users\zjuli\source\repos\Summe n-Zahlen\Summe n-Zahlen\Summe n-Zahlen.obj	1	
    Fehler	LNK1120	2 nicht aufgelöste Externe	Summe n-Zahlen	C:\Users\zjuli\source\repos\Summe n-Zahlen\Debug\Summe n-Zahlen.exe	1
    

    Hallo Community!
    Ich habe ein Problem mit der Variablen-Deklaration bzw. Definition, glaube ich zumindest. Mit extern int habe ich es auch schon probiert hat aber nichts geändert. Genauso wie int n{}; wobei hier dann der Fehler kam von

    Schweregrad	Code	Beschreibung	Projekt	Datei	Zeile	Unterdrückungszustand
    Fehler	C2086	"int n": Neudefinition	Summe n-Zahlen	C:\Users\zjuli\source\repos\Summe n-Zahlen\Summe n-Zahlen\Summe n-Zahlen.cpp	3
    

    Aufgabe:
    Es soll ein Programm entwickelt werden, dass die Summe der natürlichen Zahlen von 1
    bis n berechnet. Die Summe soll einmal durch aufsummieren und einmal
    durch Verwendung der Summenformel von Gauß berechnet werden.
    Vielen Dank für die Hilfe schon im Voraus!



  • Lass das mit Header.h, Du brauchst für Dein Programm nur <iostream>.
    Definiere die Funktionen sum1() und sum2() vor main() (nicht IN main()). In main() kannst Du die Funktionen dann aufrufen.

    #include <iostream>
    
    int sum1(int n)
    {
    	int h = 0;
    
    	while (n > 0) { // Aufsummieren ohne Formel
    		h = h + n;
    		n = n - 1;
    	}
    	return h;
    }
    
    int sum2(int n) // Gauss Formel
    {
    	return n * (n + 1) / 2;
    }
    
    int main()
    {
    	std::cout << "Please enter a natural number: ";
    	int n;
    	std::cin >> n;
    
    	int result = sum1(n);
    	std::cout << "Sum 1 = " << result << '\n';
    
    	result = sum2(n);
    	std::cout << "Sum 2 = " << result << '\n';
    }
    


  • @Swordfish danke für die schnelle Antwort!



  • @joules sagte in Deklartions und/oder Defintionsfehler (error LNK2019):

    using namespace std;
    

    Noch was dazu: Damit schüttest Du alle Bezeichner die im Namensraum std sind in den globalen Namespace aus. Wenn Du das in einer Headerdatei machst passiert das in allen Sourcefiles in denen der Header eingebunden wird was zu Namenskonflikten führen kann. Bei kleinen Programmen mag das noch zu verschmerzen sein, aber man sollte sich sowas garnicht erst angewöhnen.

    Das void in leeren Parameterlisten kannst Du Dir auch sparen.



  • @joules sagte in Deklartions und/oder Defintionsfehler (error LNK2019):

    int sum1(int n); {
    int h = 0;

    Achtung: Bei der Definition der Funktion (wo der Inhalt/Code steht) gibt es vor der { kein ;

    Das ist der Unterschied zur Deklaration (bei dir in Zeile 5)

    Welche Programmiersprache versuchst du da C aufzuzwingen?



  • @DirkB

    @DirkB sagte in Deklartions und/oder Defintionsfehler (error LNK2019):

    Welche Programmiersprache versuchst du da C aufzuzwingen?

    Hi! Visual Studio hat mir hierbei einen Fehler angezeigt, welcher durch das ; gelöst wurde.



  • @joules sagte in Deklartions und/oder Defintionsfehler (error LNK2019):

    Hi! Visual Studio hat mir hierbei einen Fehler angezeigt, welcher durch das ; gelöst wurde.

    Nein, wurde er nicht.
    Der Fehler hat sich verlagert.
    Und planloses einfügen irgendwelcher Zeichen ist kein Programmieren!

    Mit aufzwingen meinte ich auch sowas wie Funktionen innerhalb von Funktionen.


Log in to reply