Function Problem
-
Bashar schrieb:
In main.cpp und funktionen.c gibt es also jeweils einen eigenen Satz dieser Variablen, und das ist der Grund, dass du die Änderungen in der main nicht siehst.
Sollte man dann static Variablen immer in .c Source-Dateien definieren und nie im Header?
-
static ist eine art primitiver datenkapselungsmechanismus, von daher wird wohl meistens die verwendung im header nicht das gewünschte resultat liefern. prinzipiell wäre das aber kein fehler, und wenn dir eine situation einfällt, in der du dieses verhalten brauchst...
(ps: dass static durch anonyme namespaces abgelöst werden soll, deutet diesen verwendungszweck ebenfalls an.)
-
queer_boy schrieb:
wenn dir eine situation einfällt, in der du dieses verhalten brauchst...
http://en.wikibooks.org/wiki/More_C%2B%2B_Idioms/Nifty_Counter
-
für strings in c++ std::string und nicht char*
-
Also static Variablen gelten, wenn man sie in dem Modul als global deklariert, nur in diesem Modul, obwohl sie global deklariert sind? Und wenn man in einer Funktion eine Variable static deklariert, dann ist sie zwar lokal, wird aber, wenn man die Funktion verlässt, nicht zerstört, behält also quasi ihren Speicherbereich noch?
Ist das das Einzige was static bringt?
-
schließlich gibt es noch statische klassenvariablen/funktionen, die dann für alle instanzen dieselben sind.
-
kk habe ja gesagt noob frage

schon lange nicht mehr programmiert..naja jetzt dann ne frage:
also wie soll ich das machen ..
ich möchte eine function die mit
DWORD WINAPI GetPrivateProfileString( __in LPCTSTR lpAppName, __in LPCTSTR lpKeyName, __in LPCTSTR lpDefault, __out LPTSTR lpReturnedString, __in DWORD nSize, __in LPCTSTR lpFileName );daten aus einer ini datei ließt
habe in main.cpp
nur den aufruf der funktion laden und dann gibt der das aus also#include "windows.h" #include "function.h" ... ... ... lesedateiaus(); cout << blabla1[] << testtaa[] << muuuuh[]; ... ... ...ind function.h habe ich die arrays deklariert(und die function halt)
#include <iostream> extern char blablal[20]; //muss ne größe angeben für function später extern char testtaa[20]; extern char muuuuh[20]; void lesedateiaus();dann in function.c die funktion halt.
#include "windows.h" #include "function.h" lesedateiaus(){ GetPrivateProfileString("test","array1","Error",blablal,sizeof(blablal),"C:\\test.ini"); //das dann noch für die anderen arrays GetPrivateProfileString("test","array2","Error",testtaa,sizeof(testtaa),"C:\\test.ini"); GetPrivateProfileString("test","array2","Error",muuuuh,sizeof(muuuuh),"C:\\test.ini"); }also das ist jetzt falsch...
aber wie könnte ich es """professionell""" lösen?^^Mfg NOOB ^^
-
weiß das keiner? o.o
ka wie ich das machen soll
-
Was funktioniert denn nicht (Compilerfehler, Laufzeitfehler, falsche Rückgabewerte)?
P.S. Dies ist dann eher eine Frage für das WinAPI-Forum...
-
da kommt das ich die variable nicht deklariert habe ...
-
Dann deklariere sie doch, wo ist da das Problem?
btw, wenn sich der Linker beschwert, liegt es vermutlich an einer fehlenden Definition - dem reicht der extern-Eintrag im Header nämlich nicht aus. Da mußt du am Anfang der "funktion.c" noch die Definitionen ergänzen.
-
bekomme jetzt ganz oft so einen error :
[Linker error] undefined reference to `variablen_name'also füre jede variable 2-3 mal
denke ma pro aufruf oder so.Mfg NOOB ^^
-
omg geschaft ^^ sry xD
mega noob einfach zu faul gewesen sorry