Forum: en funktion som skapar globalt!

Forum huvudsida -> Programmering -> en funktion som skapar globalt!

Sidor: 1

Till botten

lord_slampa 23:39 - 9:e Augusti 2007 | Post #1
Medlem
Inlägg: 46


Skicka PM
tja! jag skulle bheöva lite hjälp, måste skapa en global variabel i en funktion. och jag ska liksom kunna ställa in vad den skall heta med en viss variabels namn och så.


-------------------------
DirectX + Win32 Api For the win!



Slash 10:18 - 10:e Augusti 2007 | Post #2
Medlem
Inlägg: 141


Skicka PM
Jag är ju lite trög och förstår inte riktigt vad du vill åt här. Kan du, om möjligt, föklara lite mer ingående vad och varför?

-------------------------
Ingen sigantur!



NetNinja 10:36 - 10:e Augusti 2007 | Post #3
Medlem
Inlägg: 116


Skicka PM
Det är omöjligt att välja namn på en variabel och fyller ingen funktion. Kolla upp pekare, det ger dig nog det resultatet du vill ha.

Sen om du vill kunna komma åt en variabel utanför en funktion så kan man använda static.

static char namn;

Vet inte hur det fungerar exakt, om du kan använda funktionen igen och så. Men kolla pekare först!

-------------------------





sdac 17:57 - 19:e Augusti 2007 | Post #4
Medlem
Inlägg: 235


Skicka PM
  1. #define GLOBAL(x) static int global_##x


Det närmaste du kan komma... GLOBAL(hej); skapar en variable med namnet "global_hej". Du kan dock inte använda macron innanför funktioner för att skapa globala variabler.

,,r du ute efter associativa listor:
  1. global["nisse"]


... Så kan du använda std::map i C++.
  1. std::map<std::string, int> global;
  2.  
  3. void hej(void)
  4. {
  5. global["nisse"] = 12345;
  6. }


Och för att "liksom kunna ställa in vad den skall heta med en viss variabels namn och så":

  1. #include <iostream>
  2. #include <map>
  3.  
  4. #define LIKSOM_STELLA_IN_VAREN_SKA_EHTTA(n) global[#n] = n
  5. std::map<std::string, int> global;
  6.  
  7. void hej(void);
  8. void hejigen(void);
  9.  
  10. int main(void)
  11. {
  12. hej();
  13. hejigen();
  14. return 0;
  15. }
  16.  
  17. void hej(void)
  18. {
  19. int fint_namn = 1237895;
  20. LIKSOM_STELLA_IN_VAREN_SKA_EHTTA(fint_namn);
  21. }
  22.  
  23. void hejigen(void)
  24. {
  25. std::cout << global["fint_namn"] << ''\n'';
  26. }


Eller så förklarar du mer utförligt vad du är ute efter.Smiley

EDIT: notera att när "fint_namn" väl är inne i den globala listan är det en kopia av den. Du kan alltså inte ändra fint_namn i funktionen "hej" efteråt för att påverka den globala kopian med samma namn.

EDIT igen: Med närmare eftertanke kom jag på att även det skulle gå såklart. Skriv om macron lite och låt map-skiten använda pekare istället så har du sen en global lista med pekare till variabler i olika funktioner.

Men jag håller delvis med NetNinja om att hela konceptet inte fyller någon funktion.


Senast redigerad 18:13 - 19:e Augusti 2007


Sidor: 1

Forum huvudsida -> Programmering -> en funktion som skapar globalt!
Atom feed

Du får inte posta i den här tråden | Till toppen