Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

25.10.2013, 19:44

Funktion aufrufen (C++) in Visual Studio Express 2012 funktioniert nicht

Ich hab ein Problem mit den Funktionen und dem Compiler: Ich habe einen Test durch geführt:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
#include <iostream> 
using namespace std;

void mf () 
{
  cout << "mf wurde aufgerufen!" <<endl; 
}

int main() 
{
  void mf (); 
  return 0; 
}

Als Ergebnis erwarte ich (natürlich): mf wurde aufgerufen!

Doch stattdessen passiert nichts!

Als gäbe es diese Funktion nicht.

Liegt es am Compiler oder wie?

Edit by dot: Formatierung gefixed

Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von »dot« (25.10.2013, 21:27)


2

25.10.2013, 20:06

Es wird wohl ganz kurz geöffnet und sofort wieder geschlossen, da du dem Programm nicht sagst, dass es auf irgendwas warten soll.
So was geht mit std::cin, getchar, for, while, system, ... Einfach mal googeln. :)
Den Code brauchst du übrigens nicht selbst einzufärben und schrecklich zu formatieren, da reicht ein Paste in die Code Tags.

Quellcode

1
[cpp]Hier kommt der Code rein[/cpp]


MfG
Check

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

25.10.2013, 20:23

Ähm warum void mf(); ? nur mf(); bitte.

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
void mf(){
    // bla
}

int main(...){
    mf();

    ret...
}

4

25.10.2013, 20:34

Liegt es am Compiler oder wie?

Es liegt eigentlich immer an dir, Compilerbugs sind sehr selten.

Die Lösung hat DeKugelschieber ja schon genannt. In deinem Code erzeugst du eine neue Variable mf (einen Funktionszeiger).
"Theory is when you know something, but it doesn’t work. Practice is when something works, but you don’t know why. Programmers combine theory and practice: Nothing works and they don’t know why." - Anon

Tobiking

1x Rätselkönig

  • Private Nachricht senden

5

25.10.2013, 20:38

In deinem Code erzeugst du eine neue Variable mf (einen Funktionszeiger).

Das ist kein Funktionszeiger. Das ist eine Variable vom Typ void mit Initialisierung.

Helmut

5x Contest-Sieger

Beiträge: 692

Wohnort: Bielefeld

  • Private Nachricht senden

6

25.10.2013, 20:40

Liegt es am Compiler oder wie?

Es liegt eigentlich immer an dir, Compilerbugs sind sehr selten.

Die Lösung hat DeKugelschieber ja schon genannt. In deinem Code erzeugst du eine neue Variable mf (einen Funktionszeiger).

In deinem Code erzeugst du eine neue Variable mf (einen Funktionszeiger).

Das ist kein Funktionszeiger. Das ist eine Variable vom Typ void mit Initialisierung.

Ihr liegt beide falsch. Das ist eine Vorwärtsdeklaration der Funktion mf. (Auch wenn die Funktion schon vorher definiert wurde. Macht also nicht viel Sinn)
Sei stets geduldig gegenüber Leuten, die nicht mit dir übereinstimmen. Sie haben ein Recht auf ihren Standpunkt - trotz ihrer lächerlichen Meinung. (F. Hollaender)

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

7

25.10.2013, 21:03

Waaarte waarte mir fällt auch noch was ein :D
Das ist...

dot

Supermoderator

Beiträge: 9 757

Wohnort: Graz

  • Private Nachricht senden

8

25.10.2013, 21:36

Ich war so frei, die Formatierung deines Postings zu fixen...in Zukunft bitte einfach Code Tags benutzen, ist auch wesentlich weniger Arbeit als das Syntax-Highlighting per Hand zu machen... ;)

In deinem Code erzeugst du eine neue Variable mf (einen Funktionszeiger).

Das ist kein Funktionszeiger. Das ist eine Variable vom Typ void mit Initialisierung.

void ist ein inkompletter Typ der nicht komplettiert werden kann. Mit anderen Worten: Du kannst niemals ein Objekt vom Typ void definieren... ;)

Ansonsten wurde die Frage ja bereits beantwortet...

9

26.10.2013, 10:26

Danke an alle! :D

Werbeanzeige