seltsam?
-
Hi mein C++ ist so seltsam dumm und bringt einen error
'kill' : undeclared identifier
Obwohl ich die Void darüber deklariert habe!
#include "stdafx.h" #include <windows.h> #include <stdio.h> int i; void Killer(); void main() { Killer(); for(i = 0;i < 2; i++) { printf("%s\n", kill[i]); } } void Killer() { char* kill[] = { "OLLYDBG", "LECH" }; }
-
void bedeutet soviel das Du nichts zurückgibst, Du mußt aber zumindest einen Zeiger auf die Daten zurückgeben.
Außerden is das C und nicht C++. C++ ist OOP-Programmierung mit Klassen usw. oder verstehen wir unter C++ was anderes?
Denisz schrieb:
#include "stdafx.h" #include <windows.h> #include <stdio.h> int i; void Killer(); void main() { char *kill = Killer(); for(i = 0;i < 2; i++) { printf("%s\n", kill[i]); } } char* Killer() { char* kill[] = { "OLLYDBG", "LECH" }; return kill; }
-
Dieser Thread wurde von Moderator/in estartu aus dem Forum MFC (Visual C++) in das Forum ANSI C verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Ähm,
also
char* Killer() { char* kill[] = { "OLLYDBG", "LECH" }; return kill; }
das Array kill wird doch nach Verlassen von Killer() freigegeben, sodass
der Pointer kill in main() dann auf ungültigen Speicher zeigt?Oder bleibt der Speicher hier auch reserviert, da es Stringliterale sind?
-
Denisz schrieb:
Hi mein C++ ist so seltsam dumm und bringt einen error
Erstmal ist es nicht _dein_ C++, da C++ für jeden gleich spezifiziert ist. Und zweitens solltest du erstmal versuchen, den Fehler bei _dir_ zu suchen. Was gibt's denn an
'kill' : undeclared identifier
nicht zu verstehen?
'kill' ist eine Variable, die du in der Funktion Killer definiert hast, somit auch nur dort ihren Gültigkeitsbereich hat. Wieso glaubst du, dass du in main darauf zugreifen kannst?CTecS schrieb:
C++ ist OOP-Programmierung mit Klassen usw. oder verstehen wir unter C++ was anderes?
Ja. Es ist zwar richtig, dass C++ für OOP entwickelt wurde. Aber da C++ eine Multiparadigmen Sprache ist, muss das noch lange nicht bedeuten, dass C++ zwangsläufig OOP sein muss.
SeppSchrot schrieb:
Oder bleibt der Speicher hier auch reserviert, da es Stringliterale sind?
Nee, deine erste Vermutung war schon richtig. Die Literale sind zwar static, spielt hier aber keine Rolle. kill ist ein auto Array und damit nach dem Ende der Funktion tot.
-
variablen in einer funktion existieren nur so lange, wie die funktion laeuft.