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 vonSchweregrad 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 Funktionensum1()
undsum2()
vormain()
(nicht INmain()
). Inmain()
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 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.