_vamecum Skrevet 29. august 2006 Del Skrevet 29. august 2006 using namespace std; er en dårlig vane imho. Lenke til kommentar
lnostdal Skrevet 29. august 2006 Del Skrevet 29. august 2006 (endret) hvorfor det? man sparer masse tid på det, og det er lite sansynlig at man får kluss siden så lenge man ikke gjør det i header-filer slik at det "smitter" til definisjons-filer edit: tipper du ikke spiser din egen hundemat her (hva er norsk for dette uttrykket btw.? http://en.wikipedia.org/wiki/Eat_one's_own_dog_food ) Endret 29. august 2006 av lnostdal Lenke til kommentar
darkspacemonster Skrevet 29. august 2006 Del Skrevet 29. august 2006 using namespace std;er en dårlig vane imho. 6763798[/snapback] Hvorfor? Og forresten den koden du (trådstarter) limte inn i den første posten er korrekt. Problemet lå sikkert i "Manifest Tool'en" mt.exe. http://windowssdk.msdn.microsoft.com/en-us...y/ms716972.aspx Som sagt tidligere er Bloodshed Dev-Cpp (C++) en kjempegrei IDE + at kompiler følger med, slik at du kan bare trykke Build (evt Compile) så ordner alt seg. Men dette har vel allerede ordnet seg Lenke til kommentar
Gjest Slettet+142 Skrevet 31. august 2006 Del Skrevet 31. august 2006 sorry dette.. veldig OT, men e veldig nobbie doobie doo her, så... ka e vitsen med "std::" når det funker like bra å ikkje bruke d? Lenke til kommentar
john.einar Skrevet 31. august 2006 Del Skrevet 31. august 2006 sorry dette.. veldig OT, men e veldig nobbie doobie doo her, så... ka e vitsen med "std::" når det funker like bra å ikkje bruke d? 6779278[/snapback] I små kodesnutter som postes her har det ingenting å si. Men når man jobber på store prosjekter med flere utviklere og kanskje komponenter fra flere teams og flere forskjellige firma så kan kollisjoner oppstå, aka at det plutselig finnes 2 funksjoner,klasser,enum'er, etc med samme "navn"... Om man passer på å putte ting i egne namespaces så kan ting med samme "navn" (greit: fult navn inkl namespace, men de som vet det kan bare ignorere denne posten likevel) brukes i et program uten å kræsje med hverandre. std er standardbiblioteket i c++'s namespace. I dette er det utlovlig å putte ting selv (men det er fult mulig å gjøre det). Man står fritt til å lage andre namespaces og aliaser for namespaces. Lenke til kommentar
lnostdal Skrevet 31. august 2006 Del Skrevet 31. august 2006 (endret) sorry dette.. veldig OT, men e veldig nobbie doobie doo her, så... ka e vitsen med "std::" når det funker like bra å ikkje bruke d? 6779278[/snapback] Det funker ikke "like bra". Man må bruke `std::' eller `using namespace std'. Hverken spørsmålet eller svar folk gir, gir noen mening om du ikke forstår det som ligger bak dette med namespaces. Et namespace er som ordet tilsier et "rom med navn i". Man kan ha flere "rom med navn i", og hvert av disse rommene har navn selv - så disse tingene kan nestes. Du kan tenke deg husnummer; de starter med 1 og går videre 2, 3, 4, 5 o.s.v.. Selv om jeg bor i "hus nr. 2" og en annen også bor i "hus nr. 2", bor vi i forskjellige gater - og ved å ta med gatenavnet (namespacet) i tillegg til husnummeret så er det ikke lenger tvil om hvilke av husene som menes når noen sier "åfossringen, hus nr. 2". Noen ganger er det slitsomt å ta med gatenavnet hele veien i en litt lengre samtale - altså måtte legge til `std::' forran alt, og man starter derfor med å sette opp en sammenheng - `using namespace std', og det forståes dermed at det er hus nr. 2 i den-og-den gaten som gjelder når ikke noe annet blir sagt eksplisitt. Hm, forståelig? Endret 1. september 2006 av lnostdal Lenke til kommentar
charlie di meola Skrevet 1. september 2006 Del Skrevet 1. september 2006 Hm, forståelig? 6780121[/snapback] nei men kanskje det blir tydeligere med et lisp eksempel? Lenke til kommentar
Giddion Skrevet 1. september 2006 Del Skrevet 1. september 2006 hehe lisp ja.. hmm.. da får jeg prøve da Tenke på det som en annen verden !! I C++ verdenen(global namespace) har de en regel om at ingen kan hete det samme. Så 2 stk. kan ikke hete Ole, så hvis moren til en "unge" vil gi den navnet Ole så må hun flytte ungen til en annen verden (namespace) så hvis hun vil sende brev til ole må hun sende det til Verden2::Ole og hvis hun vil sende brev til den første Ole trenger hun bare sende til Ole Så hvis du befinner(using namspace) deg i Verden2 så heter han/hun/det bare Ole I mitt prosjekt så har jeg noen klasser som har samme navn så for å slippe masse problemer så har jeg lagt de i forskjellige namespace. Da vet kompilatoren hvem som er hvem. eks Gui::Console Core::Console håper det hjalp Lenke til kommentar
lnostdal Skrevet 1. september 2006 Del Skrevet 1. september 2006 (endret) Hm, forståelig? 6780121[/snapback] nei men kanskje det blir tydeligere med et lisp eksempel? 6780539[/snapback] okei - hva vil du se? det er ikke dumt å trekke frem lisp, siden lisp er hva mange (nye; ironisk nok) språk trekker seg mot edit: forøvrig ganske forbauset over at en som allerede "kan" c++ ikke skjønner eks. mitt - for om jeg ikke husker feil så har du postet litt her tidligere? åssen ville du ha forklart det? jeg har forsøkt å forklare dette "rom-messig" eller visuellt.. det er andre måter å forklare eller forstå disse tingene på, men det kan hende du bare er ute etter å lage faen og/eller mangler evnen til å bidra med noe selv .. :} edit2 (såkallt "off topic"): Skjult tekst: (Marker innholdet i feltet for å se teksten): her er et eksempel i lisp (hah! - du spurte) på hvordan man kan sette opp _sammenhenger_ når man bruker `if' - som man gjør når man sier at "i denne sammenhengen skal man bruke navnrommet `std' eller snakke om gaten "åfossringen"" vi har en utregning som returnerer et tall om den er vellykket, eller `false' (NIL altså) om den feiler: ( http://paste.lisp.org/display/25092 ) (defun long-calculation (arg) "A time consuming calculation." (let ((result (+ arg 2)));; not that long really, but ok (if (oddp result) result nil))) #| cl-user> (long-calculation 50) nil cl-user> (long-calculation 51) 53 cl-user> (long-calculation 52) nil cl-user> (long-calculation 53) 55 |# videre har vi en funksjon som ønsker å gjøre noe basert på om det som returneres er `true' (alt er en subtype av T i lisp) eller `false' (NIL): ( http://paste.lisp.org/display/25092#1 ) (defun test () (let ((result (long-calculation (random 98)))) (if result ;; no need to call long-calculation again here; we have it in a context named `result' (format t "long-calculation returned ~A~%" result) (write-line "long-calculation failed!")))) #| cl-user> (test) long-calculation failed! "long-calculation failed!" cl-user> (test) long-calculation returned 51 nil cl-user> (test) long-calculation returned 51 nil cl-user> (test) long-calculation failed! "long-calculation failed!" cl-user> (test) long-calculation returned 13 nil |# ...vel, dette med å bruke resultatet av if-sjekken "på nytt" i selve then-formen brukes veldig ofte, så vi ordner noe som gjør at den setter opp en sammenheng "automatisk": ( http://paste.lisp.org/display/25092#2 ) (defmacro aif (result-symbol test-form then-form &optional else-form) `(let ((,result-symbol ,test-form)) (if ,result-symbol ,then-form ,else-form))) (defun test () (aif result (long-calculation (random 98)) ;; no need to call long-calculation again here; we have it in a context named `result' (format t "long-calculation returned ~A~%" result) (write-line "long-calculation failed!"))) #| ;; We take a peek at what happens behind the scenes: cl-user> (macroexpand-1 '(aif result (long-calculation (random 98)) ;; no need to call long-calculation again here; we have it in a context named `result' (format t "long-calculation returned ~A~%" result) (write-line "long-calculation failed!"))) (let ((result (long-calculation (random 98)))) (if result (format t "long-calculation returned ~A~%" result) (write-line "long-calculation failed!"))) t ;; ..see how this matches the previous definition of `test'? |# anaphoric: "The use of a linguistic unit, such as a pronoun, to refer back to another unit, as the use of `her' to refer to `Anne' in the sentence `Anne asked Edward to pass her the salt'." Endret 2. september 2006 av lnostdal Lenke til kommentar
_vamecum Skrevet 1. september 2006 Del Skrevet 1. september 2006 hvorfor det? man sparer masse tid på det, og det er lite sansynlig at man får kluss siden så lenge man ikke gjør det i header-filer slik at det "smitter" til definisjons-filer edit: tipper du ikke spiser din egen hundemat her (hva er norsk for dette uttrykket btw.? http://en.wikipedia.org/wiki/Eat_one's_own_dog_food ) 6765838[/snapback] Fordi jeg mener det både er indikasjon på at man bruker de nye c++-systemet. ( #include <iostream> og ikke <iostream.H>) , og fordi jeg mener det er greit å se hvor kode kommer fra. dersom jeg skrive på motor-kode . for eks. spc er namespace og jeg skriver på spc::Scenegraph , så er det greit å bruke using namespace spc; i Scenegraph.cpp. I applikasjonskoden syns jeg forøvrig det er greiere å være eksplisitt. spc::Scenegraph s; s.render(); kun 5 bokstaver mer, og andre programmerere vet med en gang hvor Scenegraph hører hjemme. veldig greit dersom man jobber flere på en applikasjon som benytter forskjellige libs osv. Jeg er ikke så glad i hundemat, så stopp med de anglofiserte metaforene Lenke til kommentar
Gjest Slettet+142 Skrevet 1. september 2006 Del Skrevet 1. september 2006 sorry dette.. veldig OT, men e veldig nobbie doobie doo her, så... ka e vitsen med "std::" når det funker like bra å ikkje bruke d? 6779278[/snapback] Det funker ikke "like bra". Man må bruke `std::' eller `using namespace std'. Hverken spørsmålet eller svar folk gir, gir noen mening om du ikke forstår det som ligger bak dette med namespaces. Et namespace er som ordet tilsier et "rom med navn i". Man kan ha flere "rom med navn i", og hvert av disse rommene har navn selv - så disse tingene kan nestes. Du kan tenke deg husnummer; de starter med 1 og går videre 2, 3, 4, 5 o.s.v.. Selv om jeg bor i "hus nr. 2" og en annen også bor i "hus nr. 2", bor vi i forskjellige gater - og ved å ta med gatenavnet (namespacet) i tillegg til husnummeret så er det ikke lenger tvil om hvilke av husene som menes når noen sier "åfossringen, hus nr. 2". Noen ganger er det slitsomt å ta med gatenavnet hele veien i en litt lengre samtale - altså måtte legge til `std::' forran alt, og man starter derfor med å sette opp en sammenheng - `using namespace std', og det forståes dermed at det er hus nr. 2 i den-og-den gaten som gjelder når ikke noe annet blir sagt eksplisitt. Hm, forståelig? 6780121[/snapback] ja egentlig litt, men eg trenger visst nok ikkje å bry meg om std::, fordi at eg bruker "using namespaceing std;", eller? * har lest halveis en bok om dette her, men ble visst litt for vanskelig ^^ takk for OT-svaret Lenke til kommentar
charlie di meola Skrevet 1. september 2006 Del Skrevet 1. september 2006 Hm, forståelig? 6780121[/snapback] nei men kanskje det blir tydeligere med et lisp eksempel? 6780539[/snapback] edit: forøvrig ganske forbauset over at en som allerede "kan" c++ ikke skjønner eks. mitt - for om jeg ikke husker feil så har du postet litt her tidligere? heheh misforstå meg rett her. jeg vet hva namespaces er, og var bare ute etter å terge den lokale lispern eksemplene dine var top notch de Lenke til kommentar
lnostdal Skrevet 2. september 2006 Del Skrevet 2. september 2006 hehe; åkai .. ...........14 tegn fikser man slik, ok?.......... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå