Trollface. | zaterdag 6 maart 2010 @ 19:30 | |||||||
![]() Nu mét gratis web-support! Als je vragen hebt over C of C++, dan zit je hier goed met een ( Beperk je vragen niet tot "hij doet het niet" of "hij geeft een fout" - onze glazen bol is kapot en we willen graag van je weten wát er niet lukt en wélke foutmelding je precies krijgt. ![]() En onthoud: lieve modjes maken dit topic centraal! ![]() Vorige delen: Geen! ![]() ![]() ![]() ![]() Dat ligt eraan. Als je alléén voor MS Windows wilt gaan developen, is Visual Studio de beste optie. Deze kun je bovendien als je student bent via Microsoft DreamSpark of MSDN Academic Alliance gratis downloaden. :) Wil je echter cross-platform (dat wil zeggen: voor b.v. Windows én Linux, of Linux én Mac) gaan developen, dan zijn Dev-C++ en Code::Blocks de beste optie voor C++. Eclipse (ook voor C) en NetBeans zijn ook goede keuzes, alleen zijn deze meer op Java gericht. Een ander IDE, van Nokia's hand, is Qt Creator. Dit IDE maakt gebruik van het Qt-framework, een set van functies, types, variabelen etc. om programmeren makkelijker te maken. Dit framework is cross-platform. ![]() ![]() Stop! Voor vragen hoe je bepaalde ingebouwde functies, types of classes gebruikt kun je de C referentie of de C++ referentie gebruiken. Hier staat alles in wat je nodig hebt. ![]() ![]() C++ is, eenvoudig gezegd, een nieuwere versie van C (vandaar ook de naam, C++ wil zeggen: verhoog de waarde van C met 1). Het biedt onder andere betere klasse-ondersteuning en verschillende nieuwe types, zoals vectors en maps, om er maar een paar te noemen. Als je wilt beginnen met leren, is C++ beter, want C wordt eigenlijk niet vaak meer gebruikt. ![]() Het Windows SDK is een set van functies, gemaakt door Microsoft, om het programmeren voor Windows te vereenvoudigen. Als je ervoor kiest het Windows SDK te gebruiken, houd er dan rekening mee dat je applicatie Windows-only wordt! Je kunt de laatste versie hier vinden ter download. ![]() Handige links: Referenties en tutorials: Deze OP vind je hier. [ Bericht 1% gewijzigd door Trollface. op 07-03-2010 13:35:32 ] | ||||||||
cablegunmaster | zaterdag 6 maart 2010 @ 20:39 | |||||||
tvp ![]() | ||||||||
Netsplitter | zaterdag 6 maart 2010 @ 20:42 | |||||||
C# niet? | ||||||||
Trollface. | zaterdag 6 maart 2010 @ 20:43 | |||||||
quote:C# is toch wel fundamenteel anders dan C of C++... w.m.b. kun je die vragen gewoon hier stellen, maar of je antwoord krijgt is een tweede ![]() Als we wat C#-guru's hebben kan dit C(++/#) voor dummies worden w.m.b. ![]() [ Bericht 15% gewijzigd door Trollface. op 06-03-2010 20:51:58 ] | ||||||||
Fortitude | zaterdag 6 maart 2010 @ 21:07 | |||||||
Oh wacht er is een heel dev subfora. Laat maar. ![]() Lijkt me trouwens niet handig als je die 2 door elkaar haalt. C# is heel anders dan C(++). [ Bericht 48% gewijzigd door Fortitude op 06-03-2010 21:14:31 ] | ||||||||
Intrepidity | zaterdag 6 maart 2010 @ 21:23 | |||||||
Dat. Je kunt dan beter C# en VB.net samenvatten in een .net-topic. | ||||||||
Qunix | zaterdag 6 maart 2010 @ 21:24 | |||||||
quote:Objective C. | ||||||||
Trollface. | zaterdag 6 maart 2010 @ 22:36 | |||||||
quote:Als wat mensen hier (gaan) zitten die er verstand van hebben kan dat wat mij betreft toegevoegd worden, C#/VB.NET kan inderdaad beter in een apart topic. ![]() | ||||||||
LucasHulshof | zondag 7 maart 2010 @ 11:56 | |||||||
Potentieel interessant topic. ![]() Een aardige gratis ide, zonder al te veel poespas en bloat, voor windows, inclusief mingw compiler: Link Een erg goede en gratis IDE, voor zowel windows/linux, gericht op het ontwikkelen van software met het QT framework (o.a. google earth maakt hier gebruik van) QTCreator Het QT Framework verlost je van het broddelwerk genaamd "windows api" en is compleet object georienteerd. Een aanrader voor iedereen die serieus portable software wil schrijven. Verder, voor iedereen die écht C wil leren, is er maar één boek wat er toe doet: "The C programming language" van Kernighan en Ritchie, de bedenkers van C. Want in tegenstelling tot wat er in de o.p. staat wordt C nog wel veel gebruikt en is het niet de voorganger van C++ | ||||||||
Trollface. | zondag 7 maart 2010 @ 13:32 | |||||||
quote:Misschien is voorganger idd wat slecht verwoord, maar volgens mij wordt C niet echt vaak meer gebruikt. ![]() Dev-C++ stond al in de OP, ik heb QT toegevoegd. ![]() | ||||||||
Crutch | zondag 7 maart 2010 @ 13:36 | |||||||
Dikke vette TVP. Thanks Trollface. ![]() | ||||||||
Crutch | zondag 7 maart 2010 @ 13:41 | |||||||
Btw, C++ is toch gewoon next leveL C? Grootste toevoeging van C++ is Object Oriented Programming. Dus eigenlijk zou C++/C# niet zo raar zijn voor dit topic tenzij het verschil tussen C++ en C# té groot is. | ||||||||
Trollface. | zondag 7 maart 2010 @ 13:45 | |||||||
quote:C# is écht fundamenteel anders dan C++, C# is een samengooisel van C++ en Java, en het lijkt daarbij meer op Java imho. ![]() | ||||||||
progje | zondag 7 maart 2010 @ 14:33 | |||||||
Ah zal eens gaan meelezen.. Programmeer in c++ en c# ![]() | ||||||||
Crutch | zondag 7 maart 2010 @ 14:39 | |||||||
quote:Wat maak je zoal? | ||||||||
Green1 | zondag 7 maart 2010 @ 14:41 | |||||||
tvp | ||||||||
progje | zondag 7 maart 2010 @ 14:41 | |||||||
quote:Ik werk aan ons eigen product, waarover ik op FOK verder maar niet zoveel ga vertellen ![]() De core van dit product is geheel C/C++ Verder hebben we ook een CMS voor dit product, dit is ontwikkeld in C# Verder hebben we natuurlijk een API voor het product, ook geheel C# Maar ik werk voornamelijk aan de core (gelukkig) Ik vind C# / ASP.Net programmeren nogal uber saai ![]() | ||||||||
arpy | zondag 7 maart 2010 @ 15:26 | |||||||
tvp. Voor C gebruik ik Pelles C, superlicht en maakt erg kleine executables in Windows. Dan nog GTK+ voor de GUI en je kan zo beginnen. | ||||||||
ErictheSwift | zondag 7 maart 2010 @ 21:42 | |||||||
quote:Laat de Gordon Ramsay van de Unix wereld (yeah i'm talking about you Linus Torvalds ![]() | ||||||||
Fortitude | zondag 7 maart 2010 @ 21:45 | |||||||
quote:Ja maar een kernel is ook niet bepaald het meest standaard stuk code. | ||||||||
Hameren_Yzer | zondag 7 maart 2010 @ 21:45 | |||||||
cout << "TVP"; | ||||||||
Wukl | zondag 7 maart 2010 @ 21:57 | |||||||
TVP! ![]() | ||||||||
Cruise.Elroy | zondag 7 maart 2010 @ 23:26 | |||||||
![]() | ||||||||
Trollface. | zondag 7 maart 2010 @ 23:42 | |||||||
quote:void main? Echt waar? ![]() | ||||||||
Cruise.Elroy | maandag 8 maart 2010 @ 08:22 | |||||||
quote: ![]() | ||||||||
Jo0Lz | maandag 8 maart 2010 @ 11:03 | |||||||
Centraal. ![]() | ||||||||
Cruise.Elroy | maandag 8 maart 2010 @ 16:40 | |||||||
Volgens mij zijn er bijna geen dummies in C++, die zijn slim en gaan voor een taal als C# ![]() | ||||||||
Intrepidity | maandag 8 maart 2010 @ 16:41 | |||||||
quote:Onzin, in de wereld van hardcore berekeningen en algoritmen is C(++) ongeevenaard. | ||||||||
Cruise.Elroy | maandag 8 maart 2010 @ 17:12 | |||||||
quote:Begrijpend lezen is blijkbaar niet aan iedereen besteed. | ||||||||
Intrepidity | maandag 8 maart 2010 @ 17:12 | |||||||
quote:Dat blijkt ja ![]() | ||||||||
Trollface. | vrijdag 12 maart 2010 @ 16:10 | |||||||
quote:Hoezo is voor C# gaan slim? ![]() | ||||||||
progje | vrijdag 12 maart 2010 @ 16:16 | |||||||
quote:Volgens mij wordt dat nou juist niet expliciet bedoeld. ![]() | ||||||||
Crutch | vrijdag 12 maart 2010 @ 16:20 | |||||||
quote:Als je goed leest wel. Verklaring: Na een n00b geweest te zijn in C++ hebben ze besloten om voor C# te gaan. Oftewel; ze zijn nooit verdergegaan in C++ En dat wordt dan gezien als slimme keuze. | ||||||||
Trollface. | vrijdag 12 maart 2010 @ 16:21 | |||||||
quote:Pfffffffffff, C# ![]() | ||||||||
Catch22- | vrijdag 12 maart 2010 @ 16:22 | |||||||
C# is wel makkelijk om het in de vingers te krijgen. Dan kan je altijd nog weer overgaan naar C++/C | ||||||||
Crutch | vrijdag 12 maart 2010 @ 16:24 | |||||||
quote:Ik ben neutraal daarin. Mocht je namelijk iets Windows-only willen gaan programmeren dat zit je met C# wel wat beter. Java FTW! ![]() | ||||||||
progje | vrijdag 12 maart 2010 @ 16:27 | |||||||
Ik vind echt dat C# en C++ geen drol met elkaar te maken hebben ![]() Toen laatst een van mijn C# programmeurs wat C++ mocht gaan doen, had hij bijvoorbeeld toch behoorlijk wat moeite met pointers ![]() C# kan heel handig zijn voor bijvoorbeeld een website e.d. Of een doodsimpele applicatie of zo. Maar als je echt power en controle wil moet je gewoon C/C++ gebruiken Bij het bedrijf waar ik werk, hebben we ons eigen product, compleet C/C++ Maar de API, de management suite (web) e.d. zijn allemaal gemaakt in C# Omdat daarvoor C# prima geschikt is. | ||||||||
Catch22- | vrijdag 12 maart 2010 @ 16:39 | |||||||
Ik maak alleen maar webbased sites en applicaties... Dus dan C# ruim voldoende. | ||||||||
Trollface. | vrijdag 12 maart 2010 @ 16:48 | |||||||
quote:Daar gebruik ik PHP voor. Anyways, laten we dit niet in een C++ vs. C#-topic omtoveren, hoewel het wel een interessant onderwerp is natuurlijk. ![]() | ||||||||
Catch22- | vrijdag 12 maart 2010 @ 16:51 | |||||||
Het heeft beiden zijn voor- en nadelen natuurlijk. Ik vind persoonlijk ons gebruikte framework erg fijn, zeker icm VisualStudio | ||||||||
Qunix | vrijdag 12 maart 2010 @ 19:08 | |||||||
Iemand anders die hier Objective-C (Cocoa) doet? | ||||||||
Cruise.Elroy | zaterdag 13 maart 2010 @ 00:43 | |||||||
Ik ben zelf gek op C++, het is precies de juiste abstractie waarin ik me thuis voel. Gelukkig gebruiken we in mijn industrie eigenlijk niets anders. C# voor tools zou wel handig zijn denk ik, maar op dit moment ook allemaal nog in C++ ![]() | ||||||||
Trollface. | zaterdag 13 maart 2010 @ 18:30 | |||||||
Ik heb een probleem waar ik zelf niet uit kom: Ik gebruik een klasse waarbij een functie zit die een callback als volgt neemt:
Als ik deze aanroep met een functie werkt het gewoon:
Probeer ik deze echter met een klassemethode aan te roepen:
Error: ISO C++ forbids taking the address of an unqualified or parenthesized non-static function to form a pointer to member function. Say `&Class2::klasseTest`. Dan probeer ik het zoals de compiler me zegt:
No matching function call for klasse::hookCommand(char*, int(Class2::*)()); Candidates are: klasse::hookCommand(char*, int(*)()); Weet iemand hoe ik dit kan oplossen zonder de basisklasse aan te passen? ![]() | ||||||||
Cruise.Elroy | zaterdag 13 maart 2010 @ 20:38 | |||||||
Een klassemethode is heel iets anders dan een "losse" methode met dezelfde return value en parameters, er wordt namelijk nog een this pointer meegegeven bij de aanroep, anders kan de methode natuurlijk nooit uitvogelen waar hij zijn data vandaan moet halen. Het is een fout die bijna iedereen wel een keertje maakt, en het is eigenlijk een denkfout: bedenk dat voor de pointer-logica elke instantie van een klasse zijn eigen functie (methode) heeft, tenzij de functie static is, dan is het gedeeld tussen alle instanties. Member-functies/methodes zijn dan ook niet aan te wijzen met een functiepointer. twee oplossingen: 1) maak een abstracte klasse en geef pointers door naar die klasse ipv functiepointers
2) maak de funtie static en geef het een pointer naar de instantie mee.
en als ik je een tip mag geven: maak je voorbeeldcode duidelijker: klasse, DeKlasse, Class2, klasseTest, dat helpt niet echt. [ Bericht 31% gewijzigd door Cruise.Elroy op 13-03-2010 20:50:52 ] | ||||||||
Catch22- | zaterdag 13 maart 2010 @ 21:14 | |||||||
Daar verval je snel in als je een Proof of Concept/Testje schrijft maar kheb ook wel ondervonden dat je het gelijk duidelijk moet doen, anders verdwaal je gauw | ||||||||
Cruise.Elroy | zaterdag 13 maart 2010 @ 21:37 | |||||||
quote:Vooral omdat er zo ontzettende veel notaties rondzwerven kan ik iig iedereen aanraden om namen te nemen die het (meta)type goed aangeven. | ||||||||
Hameren_Yzer | zondag 28 maart 2010 @ 13:57 | |||||||
Kent iemand iets zoals getchar() maar dan zonder dat er een enter nodig is | ||||||||
Cruise.Elroy | zondag 28 maart 2010 @ 16:01 | |||||||
quote:Het standaard invoersysteem van C++ heeft daar geen standaard oplossing voor. Wat je kan proberen zijn de functies _kbhit() en _getch() Ze zitten in de header conio.h. Dit zijn oude functies uit het DOS/POSIX en worden niet meer goed ondersteund dus let daar wel mee op.
| ||||||||
Dickbride | zondag 28 maart 2010 @ 16:08 | |||||||
quote:offtopic: maar daarvoor wordt juist weer FORTRAN gebruikt ![]() | ||||||||
netolk | zondag 18 april 2010 @ 01:25 | |||||||
quote:Ja en elke ander C based programeer taal... dus uiteindelijk gewoon allemaal asambly code | ||||||||
Cruise.Elroy | zondag 18 april 2010 @ 10:25 | |||||||
quote:Er worden in de uithoeken van wetenschappelijk onderzoek vaak nog "rare" talen gebruikt. Fortran is nog steeds populairder dan C(++) in sommige gebieden. De eerste adventure game ADVENT was in Fortran geschreven ![]() | ||||||||
netolk | zondag 18 april 2010 @ 12:02 | |||||||
quote:Windows en Mac zijn voor het grootste deel in C en C++ geschreven... | ||||||||
netolk | zondag 18 april 2010 @ 12:05 | |||||||
Ik ben nu een beetje aan het klooien met pointers in C++ maar het werkt niet zo als ik zou verwachten.. dit is de code:
de output is:
en ik had nog een vraag waarom kan in de onderstaande code het bovenste wel en het onderste niet? dit zou toch het zelfde moeten zijn?
bij de onderste code geeft ie out of scope error... Mvg. netolk | ||||||||
netolk | zondag 18 april 2010 @ 12:10 | |||||||
quote:je kan denk ik beter zoiets gebruiken:
dit werkt dan wel alleen op windows | ||||||||
Cruise.Elroy | zondag 18 april 2010 @ 12:10 | |||||||
quote:Ik neem aan dat je OSX bedoelt. ![]() Stiekem is OSX in ADA geschreven, maar dat weten veel mensen niet. ![]() | ||||||||
Cruise.Elroy | zondag 18 april 2010 @ 12:11 | |||||||
quote:Behalve dat mijn oplossing maar 1 regel code is. En nog beter portable ook. | ||||||||
netolk | zondag 18 april 2010 @ 12:13 | |||||||
quote:je zegt zelf dat het niet goed ondersteund word... | ||||||||
Cruise.Elroy | zondag 18 april 2010 @ 12:13 | |||||||
quote:
Je code is niet echt makkelijk te lezen, maar als ik het even snel doorlees: In de constructor Test2:Test2() geef je by value een struct mee: myPointer refereert dus naar de tijdelijke parameter Test test. Waarschijnlijk wil je hebben:
of om met references te werken (maar dat zou ik niet doen totdat je pointers echt snapt):
| ||||||||
Cruise.Elroy | zondag 18 april 2010 @ 12:17 | |||||||
quote: ![]() edit: het zijn geen api calls. Je hebt dus gelijk ![]() Mijn code werkt onder *de meeste* windows compilers en waarschijnlijk ook aan de praat te krijgen onder Linux, maar niet makkelijk. | ||||||||
netolk | zondag 18 april 2010 @ 12:19 | |||||||
quote:wel raar dat Appel zelf wel zegt dat het framework bijvoorbeeld voor een groot deel in objective-C is geschreven en andere dingen ook in C/C++ geschreven zijn... | ||||||||
Cruise.Elroy | zondag 18 april 2010 @ 12:24 | |||||||
quote:Het was een grapje. ![]() ADA is een draak van een taal die door de US Department of Defense verplicht was gesteld ergens in de 80 tot aan eind 90s. ![]() | ||||||||
netolk | zondag 18 april 2010 @ 12:29 | |||||||
dus als ik het goed begrijp dan refereert test nu aan een Test en myPointer checkt dan dus de locatie van test die dan weer naar de meegegeven Test in de constructor wijst? Test voorbeeld; Test2 voorbeeld2(voorbeeld); myPointer -> test -> voorbeeld of klopt dit niet? | ||||||||
netolk | zondag 18 april 2010 @ 12:29 | |||||||
quote:dacht al ![]() | ||||||||
Cruise.Elroy | zondag 18 april 2010 @ 12:40 | |||||||
quote:Ongeveer, het gaat gewoon myPointer -> voorbeeld Als je de locatie van een reference opvraagt krijg je gewoon de locatie terug van het object. Een reference is een soort "onzichtbare" pointer, het gedraagt zich gewoon als een object. | ||||||||
netolk | zondag 18 april 2010 @ 12:45 | |||||||
chill, ik wist dat het moest kunnen maar niet zo snel hoe bedankt Cruise.Elroy het werkt nu ![]() | ||||||||
SinofEnvy | zondag 18 april 2010 @ 15:37 | |||||||
tvp. | ||||||||
minibeer | zondag 9 mei 2010 @ 15:10 | |||||||
Hallo ![]() Sinds een tijdje ben ik ook bezig met c++ leren, en de taal bevalt me eigenlijk wel ![]() | ||||||||
Intrepidity | zondag 9 mei 2010 @ 15:36 | |||||||
Er is denk ik geen 'dé' taal voor een bepaald platform, dat hangt compleet van het project en de eisen en dergelijke af. Voor spellen is C++ inderdaad veelgebruikt op Windows in combinatie met Direct3D en dergelijke, hoewel C# op dat gebied ook prima werkt. C# wordt dan weer meer gebruikt voor 'gewone' windows-applicaties, webapplicaties (icm ASP.net) en RIA's (icm Silverlight) Ik denk over het algemeen dat je met C# een breder pallet aan applicaties kunt bouwen met dezelfe kennis en moeite (een windows-applicatie bouwen gaat met winforms/wpf nou eenmaal sneller als in C++ met de WIn32-API). | ||||||||
minibeer | zondag 9 mei 2010 @ 15:58 | |||||||
quote:dankje voor je reactie ![]() ik snap de relatie tussen c# en c++ eigenlijk ook niet zo goed. C# is toch een opvolger van c++? MAar hij is wel simpeler en 'minder krachtig' gemaakt? Lijken de talen zoveel op elkaar dat je zonder problemen alletwee kan leren? | ||||||||
Intrepidity | zondag 9 mei 2010 @ 16:08 | |||||||
Nee, C# is geen directe opvolger van C++. C# is als het ware een kruising tussen C++ en Java. Je maakt doorgaans gebruik van het .net framework die al een hele hoop functionaliteit bevat die in je in C++ zelf zou hebben moeten programmeren, of die in ieder geval lastiger te gebruiken was. Dat betekent dat je minder tijd kwijt bent met het opnieuw uitvinden van het wiel, maar aan de andere kant beslist het framework hoe bepaalde dingen opgelost worden, terwijl je daar in C++ meer vrijheid in had. Het maken van Windows-applicaties in C++ heb ik een aantal jaar geleden gedaan met de Win32-API, en als je ziet hoe verrot lastig het daarin al is om een simpele treeview (ik noem maar iets) op je scherm te tekenen met handles en long pointers to c strings en weet ik veel wat voor rotte datatypen allemaal dan ben ik toch blij dat ik dat in Visual Studio en C# gewoon doe door een treeview-control naar mijn venster te slepen ![]() Dat betekent echter wel dat als ik de treeview iets wil laten doen wat niet standaard in het .net-framework zit (hoewel de kans daarop vrij klein is), dat het dan een stuk lastiger wordt. De syntax is tot op zekere hoogte vergelijkbaar (een for-loop is een for-loop), maar in C# los je een hele hoop op met het .net framework waar dat in C++ wat lastiger gaat. Ik moet wel toegeven dat ik geen ervaring heb met Visual C++ in combinatie met het .net framework, dus ik heb geen idee wat de verschillen zijn tussen C# .net en C++ .net ![]() Ik weet wel dat ik C++ zonder .net geen prettige bezigheid vond ![]() | ||||||||
Cruise.Elroy | zondag 9 mei 2010 @ 17:24 | |||||||
Windows applicaties maken in C++ is heel veel werk zodra je veel venstertjes etc. gaat maken, dan kan je beter C# oid gebruiken. Voor professionele games is C++ weer "beter" omdat het allemaal nog verder geoptimaliseerd kan worden. C++ is een goede taal om te leren omdat je high-level (OOP) semantiek en low-level semantiek in 1 taal hebt zitten, maar het nadeel is dat het daarom nogal overdonderend kan zijn. C# haalt veel kopzorgen voor je weg en geeft je hele mooie tools om venstertjes etc. te bouwen. ![]() | ||||||||
Trollface. | zondag 9 mei 2010 @ 17:52 | |||||||
Windows API i.c.m. C++ is inderdaad niet de beste keuze. Heeft iemand hier ervaring met C++ en GTK voor de GUI? Ohja, en de WinAPI/.NET is niet cross-platform natuurlijk, dus OSX- en Linux-gebruikers kunnen er niets mee. | ||||||||
minibeer | zondag 9 mei 2010 @ 20:07 | |||||||
nouja, ik ben toch alleen met de absolute basis van c++ bezig, loopjes die me via pointers en references wat ouput geven (via cout, want ik snap niets van printf ![]() ![]() | ||||||||
Crutch | zondag 9 mei 2010 @ 20:07 | |||||||
![]() ![]() | ||||||||
Trollface. | zondag 9 mei 2010 @ 21:37 | |||||||
Ik zou de sluitknop en het kader eromheen weghalen, je hebt toch al een sluitknop? Tevens is er een ander topic voor .NET eigenlijk, toch? ![]() | ||||||||
Crutch | zondag 9 mei 2010 @ 21:44 | |||||||
quote: ![]() Als ik de borderstyle op 'none' zet, fuckt ie de hele layout op. Maar ik ga er wel even mee testen. Heeft waarschijnlijk te maken met de grootte van de tekst in de Font property. | ||||||||
minibeer | zondag 9 mei 2010 @ 23:35 | |||||||
quote:nice ![]() | ||||||||
Crutch | zondag 9 mei 2010 @ 23:41 | |||||||
4 uurtjes + 10 minuten Photoshop. | ||||||||
Fortitude | zondag 9 mei 2010 @ 23:43 | |||||||
Hij crashed wanneer je geen ITunes hebt. Ik zou even een Exception afvangen. | ||||||||
Crutch | zondag 9 mei 2010 @ 23:47 | |||||||
quote: ![]() Staat genoteerd. | ||||||||
minibeer | maandag 10 mei 2010 @ 09:08 | |||||||
quote:Valt me mee, maar het dan ook niet zon groot dingetje ![]() | ||||||||
Crutch | maandag 10 mei 2010 @ 09:13 | |||||||
quote:Hobby. | ||||||||
minibeer | maandag 10 mei 2010 @ 16:16 | |||||||
quote:ok ![]() klein beginners vraagje. waarom: int main() { ... } ipv void main() { ... } Ik heb het tweede nog niet gezien bij voorbeeldcode, terwijl main toch echt nooit wordt gebruikt om een waarde door te geven... | ||||||||
Intrepidity | maandag 10 mei 2010 @ 16:18 | |||||||
quote:Conventie. die return-waarde wordt inderdaad bijna nooit gebruikt, maar volgensmij zijn er nog sommige antieke compilers of zelfs OS'en die moeilijk doen als er geen resultaat uit de main komt. Echter nog nooit tegengekomen. | ||||||||
Trollface. | maandag 10 mei 2010 @ 16:44 | |||||||
Programma's horen een returncode terug te geven om aan te geven of de executie succesvol was. 0 = succesvol, bij elke andere waarde is er een fout opgetreden. Deze returncode wordt echter nog maar zelden gebruikt. ![]() | ||||||||
Cruise.Elroy | maandag 10 mei 2010 @ 16:57 | |||||||
Die return-code kan je in batch files e.d. nog gebruiken om heel simpel wat feedback te krijgen van je apps. Kijk naar IF ERRORLEVEL voor DOS-batchfiles bijv. Ik gebruik void main() als het mogelijk is. Ik heb een hekel aan functies die een return-value hebben maar die by design nooit iets nuttigs returnen. | ||||||||
Trollface. | maandag 10 mei 2010 @ 17:04 | |||||||
int main() hoort toch bij de C/C++-standaard? | ||||||||
minibeer | maandag 10 mei 2010 @ 20:19 | |||||||
klinkt logisch. Bedankt ![]() | ||||||||
netolk | maandag 10 mei 2010 @ 22:04 | |||||||
quote:ja ![]() | ||||||||
Cruise.Elroy | maandag 10 mei 2010 @ 22:04 | |||||||
quote:Klopt. Ik houd er zo m'n eigen regels op na. | ||||||||
netolk | maandag 10 mei 2010 @ 22:07 | |||||||
quote: EDIT: niet goed gelezen ![]() [ Bericht 8% gewijzigd door netolk op 10-05-2010 22:13:52 ] | ||||||||
Trollface. | maandag 10 mei 2010 @ 22:11 | |||||||
quote:Dat je programma's dan überhaupt compilen ![]() | ||||||||
netolk | maandag 10 mei 2010 @ 22:13 | |||||||
die van mij idd ook niet maar die compilers van/voor microsoft waarschijnlijk wel | ||||||||
Thomass | maandag 10 mei 2010 @ 22:13 | |||||||
quote:Return values worden zeer veel gebruikt in linux systemen. ![]() | ||||||||
Trollface. | maandag 10 mei 2010 @ 22:15 | |||||||
quote:Valt ook wel mee hoor, in makefiles nog wel ja. | ||||||||
Cruise.Elroy | dinsdag 11 mei 2010 @ 07:46 | |||||||
quote:Werkt alleen onder VC++ voor C++, en zou gewoon moeten compilen op elke C compiler afaik. | ||||||||
thabit | dinsdag 11 mei 2010 @ 17:40 | |||||||
quote:Microsoft wijkt op een aantal punten van de standaard af. | ||||||||
minibeer | dinsdag 11 mei 2010 @ 18:42 | |||||||
quote:zou het (visual c++) dan eigenlijk een warning/error moeten geven? | ||||||||
thabit | dinsdag 11 mei 2010 @ 18:57 | |||||||
quote:Geen idee, ik werk niet meer met VC++, maar je kunt overal warnings en errors voor laten geven dus vast ook wel hiervoor. ![]() | ||||||||
netolk | dinsdag 11 mei 2010 @ 23:15 | |||||||
quote:tja dat zijn vaak ook de problemen met source code... | ||||||||
Ofyles2 | dinsdag 11 mei 2010 @ 23:23 | |||||||
quote:Afgelopen november een editie van Linux Magazine gekocht, meteen verslaafd geraakt door de Qt Framework. | ||||||||
thabit | woensdag 12 mei 2010 @ 11:26 | |||||||
Dit is trouwens ook wel een goed boek om de basisbeginselen van C++ te leren: http://mindview.net/Books/TICPP/ThinkingInCPP2e.html | ||||||||
netolk | woensdag 12 mei 2010 @ 12:57 | |||||||
quote:en deze natuurlijk ook: cplusplus | ||||||||
minibeer | dinsdag 25 mei 2010 @ 11:57 | |||||||
van cplusplus.com heb ik de volgende code:
Maar is het niet zo dat de types int en long hetzelfde zijn en dit voorbeeld dus eigenlijk nutteloos is? Met het compilen heb ik in elk geval geen probleem als ik een int aan een long variabele probeer toe te wijzen en andersom (ook als argumenten bij functies niet). | ||||||||
progje | dinsdag 25 mei 2010 @ 12:21 | |||||||
een int een long zijn verschillende types. Een long is een "long-int" of er daadwerkelijk verschil in de lengte zit, is afhankelijk van je processor... Dus een short is 2 bytes een long is 4 bytes en een int is 2 of 4 bytes afhankelijk van je processor. | ||||||||
thabit | dinsdag 25 mei 2010 @ 12:21 | |||||||
Op 16-bitssystemen (mogelijk van voor jouw tijd ![]() | ||||||||
Cruise.Elroy | dinsdag 25 mei 2010 @ 17:06 | |||||||
Het zijn verschillende types die op de huidige hardware "toevallig" dezelfde grootte hebben. Tenzij je de code gaat compileren op obscure platforms zou ik me er geen zorgen over maken. | ||||||||
minibeer | dinsdag 25 mei 2010 @ 17:38 | |||||||
quote:ik snap het, hoewel het wat onlogisch overkomt om de grootte van een variabele af te laten hangen van de processor. | ||||||||
minibeer | dinsdag 25 mei 2010 @ 17:39 | |||||||
quote:ik heb het programmeren geleerd in qbasic ![]() | ||||||||
Cruise.Elroy | dinsdag 25 mei 2010 @ 17:43 | |||||||
quote:Is ook raar. ![]() | ||||||||
netolk | dinsdag 25 mei 2010 @ 21:06 | |||||||
quote:raar maar waar... PS. Hier de groten van alle data typen Je kan natuurlijk ook de sizeof(agrument) gebruiken om te zien hoe groot iets is.. uitkomst is overigens wel in bytes | ||||||||
minibeer | zondag 30 mei 2010 @ 00:03 | |||||||
quote: ![]() | ||||||||
Cruise.Elroy | zondag 30 mei 2010 @ 01:17 | |||||||
quote: ![]() | ||||||||
Ofyles2 | zondag 30 mei 2010 @ 03:27 | |||||||
quote:Ik heb thuis een C++-programmeerboek liggen die datatypes van kleinere groottes heeft. Betreft int en long. | ||||||||
netolk | zondag 30 mei 2010 @ 10:24 | |||||||
quote:Dan is dat waarschijnlijk een oud boek... sizeof is de grootte die jouw computer er van maakt | ||||||||
Ofyles2 | zondag 30 mei 2010 @ 14:36 | |||||||
quote:Het gaat om 'Sams Teach Yourself C++ in One Hour a Day'. Een pijnlijke fout is dat de auteurs van dat boek vermelden dat de long int en de int van dezelfde lengte zijn. | ||||||||
minibeer | zondag 30 mei 2010 @ 15:03 | |||||||
quote:dat is dus alleen bij nieuwe systemen zo, maar hier staat ook dat de int en de long int even groot zijn: http://www.cplusplus.com/doc/tutorial/variables/ | ||||||||
minibeer | zondag 30 mei 2010 @ 15:06 | |||||||
quote:Van een SDL tutorial. Ik vroeg eerst waarom mensen eigenlijk men een main functie die een int was begonnen, maar dat is dus ook voor dit soort zaken | ||||||||
netolk | zondag 30 mei 2010 @ 15:08 | |||||||
quote:ja nieuwe systemen hebben dat zo en daarom staat dat er waarschijnlijk aangezien (bijna) niemand die oude systemen nog gebruikt en er zeker geen programma's meer voor gemaakt worden | ||||||||
netolk | zondag 30 mei 2010 @ 15:09 | |||||||
quote:gewoon int nemen dan zit je altijd goed | ||||||||
Ofyles2 | zondag 30 mei 2010 @ 15:10 | |||||||
quote:Oh, oké. | ||||||||
minibeer | zondag 30 mei 2010 @ 16:02 | |||||||
klopt het dat het niet mogelijk is om mode 13 graphics in visual c++ te doen? Dat zou niet werken omdat dat een 32-bits compiler is ofzo (verder snap ik hier de ballen van). Het zou wel kunnen in SDL, maar ik zou liever eerst om te oefenen mijn programmatjes uit qbasic naar c++ 'vertalen'. En dan kijken hoe snel ze zijn natuurlijk... Maar dit zit er dus niet in? | ||||||||
Cruise.Elroy | zondag 30 mei 2010 @ 16:10 | |||||||
quote:Mode 13 is iets van 20 jaar geleden. Tegenwoordig heb je geen palette meer van 256 kleuren ![]() Ik kan je aanraden om toch SDL te gebruiken, maar misschien eerst C++ goed onder de knie krijgen. | ||||||||
minibeer | zondag 30 mei 2010 @ 16:21 | |||||||
quote:Met qbasic kan je wel gewoon screen 13 graphics en alles doen ![]() | ||||||||
Cruise.Elroy | zondag 30 mei 2010 @ 16:42 | |||||||
quote:Ik kom ook uit een QBasic achtergrond, en het is wel even wennen. Als je echt wilt, kan je heel snel een applicatie uit de grond stampen in win32 met een scherm en een tekencanvas (zonder extra libs te hoeven downloaden) // maken en registeren van een window: RegisterWindowEx() CreateWindowEx () ShowWindow() // functie die je moet maken waarin je events afhandeld WindowProc() // maken van een tekencanvas CreateDIBSection() GetDC() SelectObject() // kopieren van het tekencanvas naar de oppervlakte van je windowBitBlt() BitBlt() // Afhandelen van window-events: GetMessage() en dan de events: WM_PAINT (herschrijven van je window) beetje muis-events afvangen: WM_MOUSEMOVE WM_LBUTTONDOWN Het is even googlen maar dan heb je in een dag wel een werkend framework waar je redelijk snel op kan tekenen. Het is alleen allemaal event driven, dus als je wilt animeren zul je iets met CreateTimer() moeten doen of met GetTickCount() de tijd in ms opvragen en dat in het GetMessage() loopje zelf doen. | ||||||||
minibeer | zondag 30 mei 2010 @ 17:03 | |||||||
quote:dankje! ok, ziet er wel ok uit, wordt dit gebruikt voor simpele grafieken binnen windows programma's enzo (zeg maar met de windows.h lib)? Ik zal er eens naar kijke ![]() maar het lijkt me niet zo makkelijk als screen 13 in qbasic ![]() echt jammer dat er geen optie is voor 16-bit compilen... [ Bericht 1% gewijzigd door minibeer op 30-05-2010 17:19:00 ] | ||||||||
Cruise.Elroy | zondag 30 mei 2010 @ 17:17 | |||||||
quote:Als je een oude C++ compiler pakt kan je wss wel oude DOS-executables maken. Geen idee hoe je dat precies kan regelen maar er zijn compilers voor. Dan blijf je helaas wel hangen in een verouderd systeem en dat is wss gewoon zonde van je tijd. | ||||||||
minibeer | zondag 30 mei 2010 @ 17:37 | |||||||
quote:Ja ik wil het sowieso wel bij 1 compiler (per taal) houden, anders vind ik het zo'n gedoe. (Om dan bijvoorbeeld sdl bij beide aan de praat te krijgen) | ||||||||
minibeer | zondag 6 juni 2010 @ 15:09 | |||||||
nog een n00bvraag... Het lukt me niet om in visual c++ andere source files te compileren bijvoorbeeld dit bestand: Codermind Raytracer source ![]() Het zal vast niet zo moeilijk zijn maar ik zou niet weten wat ik verkeerd doe ![]() | ||||||||
Cruise.Elroy | zondag 6 juni 2010 @ 15:11 | |||||||
je hebt nu een losse CPP file. Je moet er even een project (solution) omheen draaien. New project maken met de wizard, doe je gewoon C++ appliclication (met console evt) en dan "empty solution". Dan de inhoud van dat bestand in je main.cpp zetten, of dat bestand importeren in je project. | ||||||||
minibeer | zondag 6 juni 2010 @ 16:39 | |||||||
quote:ok thanks man ![]() ![]() (ik krijg hem nu alleen nog niet aan de praat:
| ||||||||
netolk | zondag 6 juni 2010 @ 16:41 | |||||||
Wat ben je aan het maken minibeer? die code ziet er interessant uit | ||||||||
Trollface. | zondag 6 juni 2010 @ 16:41 | |||||||
quote:Dit, lijkt me. ![]() | ||||||||
netolk | zondag 6 juni 2010 @ 16:44 | |||||||
quote:joh... ik vraag me ook af waarvoor de code dient en ben lui ![]() | ||||||||
minibeer | zondag 6 juni 2010 @ 16:45 | |||||||
niet van mij hoor zo ver ben ik nog niet gewoon een voorbeeld van raytracen, van het internet geplukt in qbasic heb ik nog wel eens een raytracer ding gemaakt ![]() | ||||||||
netolk | zondag 6 juni 2010 @ 16:51 | |||||||
quote:dankje nu hoef ik zelf niet te kijken ![]() | ||||||||
Cruise.Elroy | zondag 6 juni 2010 @ 18:00 | |||||||
quote:Je zal toch meer moeten posten dan een lege log als je verwacht dat we je kunnen helpen. ![]() | ||||||||
thabit | zondag 6 juni 2010 @ 18:11 | |||||||
Hoe ziet je main() eruit? int main() {return -1;} ? ![]() | ||||||||
minibeer | zondag 6 juni 2010 @ 18:57 | |||||||
quote:ja sorry ik heb nog niet echt de betekenis van die log door ![]() maar het is iig het bestand dat ik eerder al gepost had | ||||||||
Cruise.Elroy | woensdag 9 juni 2010 @ 13:55 | |||||||
is het al gelukt? | ||||||||
netolk | donderdag 17 juni 2010 @ 15:48 | |||||||
quote: | ||||||||
minibeer | vrijdag 18 juni 2010 @ 21:19 | |||||||
oweeeeuh nee, ik heb het maar opgegeven (en ik ben ondertussen een week op vakantie geweest enzo ![]() | ||||||||
netolk | zaterdag 26 juni 2010 @ 17:35 | |||||||
Hey ik heb een probleem met de ifstream eof() gebeuren...
lol.jpg is (volgens windows) 353.821 bytes en 356.352 bytes grootte op schijf dus ik zou zeggen dat het progje ook die waarde zou moeten weergeven alleen nu geeft het programma 275 aan daarna nokt het progje er dus mee zou iemand me kunnen vertellen waarom dit gebeurt en hoe ik dit kan oplossen? mvg. netolk | ||||||||
Trollface. | zaterdag 26 juni 2010 @ 19:18 | |||||||
Binaire data lees je toch niet met chars. | ||||||||
moeftie | zaterdag 26 juni 2010 @ 19:51 | |||||||
Zou het kunnen zijn dat op byte positie 275 het EOF teken staat? Waardoor de boel stopt. @Trollface: Binaire data kun je in een char lezen, als je er verder toch niks mee doet. | ||||||||
netolk | zaterdag 26 juni 2010 @ 20:00 | |||||||
quote:get() leest 1 byte en char is 1 byte. quote:Ik had daar ook naar gekeken er staat een EM (end of medium) maar ik had dus een test bestandje gemaakt met halverwege zo'n EM maar daar las hij wel gewoon netjes tot het einde van het bestand.. | ||||||||
thabit | zaterdag 26 juni 2010 @ 20:33 | |||||||
Het probleem is denk ik dat de constructor van ifstream het bestand standaard als tekstbestand opent. Probeer dus std::ifstream Read("lol.jpg", std::ios_base::binary); | ||||||||
netolk | zaterdag 26 juni 2010 @ 20:43 | |||||||
quote:Hehe, best wel stom had ik moeten weten XD maar het werkt dus bedankt thabit | ||||||||
xienixs | woensdag 30 juni 2010 @ 05:20 | |||||||
Na een tijdje in Python en Perl gespeeld te hebben is mij geadviseerd om verder te gaan in C++. Dit vooral omdat ik bezig ben in de bioinformatica. Ben ondertussen de cplusplus tutorial aan het doornemen maar vroeg me af of er online boeken/documentatie beschikbaar is met opdrachten. En of jullie misschien tutorials weten in de richting van bioinformatica? Dit alles doe ik in Xcode en moet zeggen dat tot nu toe alles nog vlekkeloos werkt ![]() | ||||||||
Cruise.Elroy | woensdag 30 juni 2010 @ 08:35 | |||||||
Ik geloof dat ze op CPP-home(.com) wel tutorials e.d. hebben; sowieso een goede community die je kunnen helpen. En dingen "in de richting van" bioinformatica lijkt me heel lastig, ik zou niets kunnen noemen wat nou typisch bioinformatica is. Voor wetenschappelijke simulaties hebje vaak goede data-architectuur kennis nodig in combinatie met geoptimaliseerde algo's (die je meestal uit papers haalt) en high-level logica. | ||||||||
Thormodo | woensdag 30 juni 2010 @ 20:01 | |||||||
quote:Op http://lesmateriaal.saxion.nl/gej/oopr/index.html , http://lesmateriaal.saxion.nl/gej/cpba1/index.html & http://lesmateriaal.saxion.nl/gej/cpro2/index.html staat ook wel wat. Ligt er maar net aan wat je nodig hebt. En nog wat zooi die ik in mijn bookmarks had staan: http://msdn.microsoft.com(...)k5%28v=VS.71%29.aspx http://www.ronkes.nl/oldprogrammeren/ Maar goed je kan beter gericht zoeken naar wat je nodig bent, want over alles staat wel wat op internet. En dit boek (maar dan de Visual C# versie) vond ik wel fijn: http://www.bol.com/nl/p/e(...)002115621/index.html . [ Bericht 4% gewijzigd door Thormodo op 30-06-2010 20:11:58 ] | ||||||||
netolk | zondag 4 juli 2010 @ 15:17 | |||||||
Hey, ik heb iets nodig zoals ::SetConsoleCursorPosition(myHandle, myCoord); alleen moet hij dat de cursorpositie geven... Weet iemand of zo'n functie bestaat of hoe die te maken is? avb | ||||||||
Cruise.Elroy | zondag 4 juli 2010 @ 16:56 | |||||||
Beetje googlen en je hebt het zo gevonden: Op MSDN, zoeken naar SetConsoleCursorPosition: http://msdn.microsoft.com/en-us/library/ms686025(VS.85).aspx En dan halverwege de tekst: quote:Eh die staat hier: http://msdn.microsoft.com/en-us/library/ms683171(v=VS.85).aspx | ||||||||
netolk | zondag 4 juli 2010 @ 17:43 | |||||||
quote:ik krijg bij het compileren een fout melding:
dit is stukje van de code
| ||||||||
Cruise.Elroy | zondag 4 juli 2010 @ 19:44 | |||||||
quote:Het is niet zo duidelijk, maar kijk goed naar het type en de naam van de tweede parameter: De P bij het type en de lp in de naam geeft aan dat het een pointer is. PCONSOLE_SCREEN_BUFFER_INFO is een pointer naar CONSOLE_SCREEN_BUFFER_INFO (ms typedeft of defined vaak zijn pointers, geen idee waarom) ipv myCoord moet je dus &myCoord meegeven. | ||||||||
moeftie | zondag 4 juli 2010 @ 21:31 | |||||||
@netolk Ik gok ook op iets met pointers, en niet gevulde variabelen. | ||||||||
netolk | maandag 5 juli 2010 @ 08:14 | |||||||
Dat is het dus niet... Ik heb van alles geprobeerd met die pointers, maar niks helpt Ik heb eerder het idee dat dwCursorPosition niet in de struct staat... maar de error is in line3 van het stukje code in mijn vorige post... | ||||||||
Cruise.Elroy | maandag 5 juli 2010 @ 08:22 | |||||||
Ik zie het al, jij maakt een pointer aan die je niet initialiseert en die geef je mee aan de functie. Die pointer moet wijzen naar een struct waar Get....() zijn info in kan zetten. De "juiste" code is dus:
Ik heb van myInfo een struct gemaakt ipv een pointer en deze reference ik naar een pointer met de -& opearator in de functieaanroep. (in mijn vorige post schreef ik myCoord, maar ik bedoelde natuurlijk myInfo) De error die je kreeg sloeg op de regel waar je dus met een . operator pointer probeerde te benaderen in regel 3. Dit is best wel basic stuff, misschien moet je je even inlezen in pointers, stack variabelen etc. ![]() | ||||||||
netolk | maandag 5 juli 2010 @ 08:30 | |||||||
quote:Hèhè, ![]() Toch bedankt ik zal idd die pointer gebeuren weer ff doornemen | ||||||||
ReWout | donderdag 8 juli 2010 @ 23:28 | |||||||
Kunt beter bij tweakers zijn voor dit. | ||||||||
Cruise.Elroy | donderdag 8 juli 2010 @ 23:53 | |||||||
quote:Nee hoor, dit lukt hier prima. ![]() | ||||||||
netolk | vrijdag 9 juli 2010 @ 10:44 | |||||||
quote:Omdat?? Gaat prima hoor, ik zag in dit geval gewoon even wat over het hoofd maar andere zien dat dan weer wel ![]() | ||||||||
TeringHenkie | zondag 1 augustus 2010 @ 22:30 | |||||||
Wat ik me altijd heb afgevraagd: als je een Win32 programma compileert, vertel je tegen de linker/compiler/whatever dat het een .exe in PE formaat is. Je bent in het feite code aan het produceren die tegen de HAL praat. Maar als je een Linux kernel compileert, wat voor een code komt er dan uit? Wat is je target platform? | ||||||||
Cruise.Elroy | zondag 1 augustus 2010 @ 22:35 | |||||||
quote:Je compiler is gewoon hard-coded om PE-headers te compileren, inclusief ondersteuning voor platform-specifieke communicatie met de HAL. Volgens mij declareer je in de PE-header ook de communicatiekanalen naar je OS mbh functie-tabellen enzo, die via de exe-loader worden ingevuld. | ||||||||
TeringHenkie | zondag 1 augustus 2010 @ 23:01 | |||||||
quote:Dus als je een kernel bakt, compileer je puur tegen de CPU aan (met een of andere compilerflagje). Je bent dan alleen maar registertjes aan het vullen en interrupts aan het callen? (mooi gewrapt in C-code ![]() | ||||||||
Trollface. | zondag 1 augustus 2010 @ 23:09 | |||||||
quote:Linux heeft geen PE-type executables, maar ELF's. ![]() | ||||||||
TeringHenkie | zondag 1 augustus 2010 @ 23:10 | |||||||
quote:I know, maar het ging me meer om de compiler vs. kernel dan om het OS zelf. Welke optie geef je mee aan gcc om een kernel te bakken ipv. een (ELF-)binary? | ||||||||
Trollface. | zondag 1 augustus 2010 @ 23:25 | |||||||
quote:Pak de makefile erbij, zou ik zeggen ![]() | ||||||||
TeringHenkie | zondag 1 augustus 2010 @ 23:33 | |||||||
Nou ik ken het niet vinden ![]() SPOILER | ||||||||
ReWout | zondag 1 augustus 2010 @ 23:39 | |||||||
gast ![]() | ||||||||
Trollface. | maandag 2 augustus 2010 @ 00:10 | |||||||
Mobiel kan spoilers niet inklappen ![]() Ook, # Make variables (CC, etc...) AS = $(CROSS_COMPILE)as LD = $(CROSS_COMPILE)ld CC = $(CROSS_COMPILE)gcc CPP = $(CC) -E AR = $(CROSS_COMPILE)ar NM = $(CROSS_COMPILE)nm STRIP = $(CROSS_COMPILE)strip OBJCOPY = $(CROSS_COMPILE)objcopy OBJDUMP = $(CROSS_COMPILE)objdump AWK = awk GENKSYMS = scripts/genksyms/genksyms INSTALLKERNEL := installkernel DEPMOD = /sbin/depmod KALLSYMS = scripts/kallsyms PERL = perl CHECK = sparse CHECKFLAGS := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \ -Wbitwise -Wno-return-void $(CF) MODFLAGS = -DMODULE CFLAGS_MODULE = $(MODFLAGS) AFLAGS_MODULE = $(MODFLAGS) LDFLAGS_MODULE = -T $(srctree)/scripts/module-common.lds CFLAGS_KERNEL = AFLAGS_KERNEL = CFLAGS_GCOV = -fprofile-arcs -ftest-coverage i.c.m. het vmlinux-gedeelte. ![]() | ||||||||
TeringHenkie | maandag 2 augustus 2010 @ 00:27 | |||||||
quote: ![]() Maar goed, ik snap het wel. Thx ![]() | ||||||||
Pakspul | donderdag 5 augustus 2010 @ 16:23 | |||||||
C++ lijkt een beetje op CSS als je totaal niet oplet ![]() [ Bericht 93% gewijzigd door Pakspul op 05-08-2010 16:37:15 ] | ||||||||
Crutch | donderdag 5 augustus 2010 @ 16:36 | |||||||
quote:[CSS] voor dummies #15 | ||||||||
Crutch | donderdag 5 augustus 2010 @ 16:46 | |||||||
quote:Als je totaal niet oplet dan lijkt Annemarie Jorritsma ook op Chantal Janzen ![]() ![]() | ||||||||
TeringHenkie | donderdag 5 augustus 2010 @ 18:07 | |||||||
| ||||||||
thabit | donderdag 5 augustus 2010 @ 18:10 | |||||||
*y blijft inderdaad geheugen innemen omdat je new aanroept. Ook als je *fpoint wel zou kunnen verwijderen, dan blijven alle *y instanties gewoon geheugen innemen. | ||||||||
TeringHenkie | donderdag 5 augustus 2010 @ 18:13 | |||||||
quote:En hoe zorg ik ervoor dat y geen geheugen meer inneemt? Niet aanroepen met new? En hoe delete ik m'n fpoint? Of moet ik dan van die doeietsmetgetal functie gewoon een class maken? En mag ik aannemen dat zodra een variabele die zonder new is gedeclareerd verwijderd wordt zodra de functie exit? | ||||||||
thabit | donderdag 5 augustus 2010 @ 18:35 | |||||||
Locale (niet-static) variabelen van functies worden op de stack aangemaakt, en die stackruimte wordt vrijgegeven als je de functie verlaat. De pointer y wordt dus ook vrijgegeven, maar niet de int *y waar hij naar verwijst. Ook is fpoint een functiepointer, dus gewoon een locale variabele die wordt verwijderd zodra je de functie verlaat. In het bovenstaande voorbeeld kun je beter int y = x*5; return y; doen, of zelfs direct return x*5; | ||||||||
TeringHenkie | donderdag 5 augustus 2010 @ 18:44 | |||||||
quote:Ok en m'n functiepointer? Valt die gewoon te verwijderen? Of moet ik 'm dan in de scope van een functie zien te proppen? | ||||||||
thabit | donderdag 5 augustus 2010 @ 18:54 | |||||||
Je functiepointer is gewoon een lokale variabele en zit in de scope van _tmain. In dit voorbeeld heb je verder geen functiepointers nodig en kun je gewoon cout << doeietsmetgetal(5); doen. | ||||||||
TeringHenkie | donderdag 5 augustus 2010 @ 20:37 | |||||||
Thanks! ![]() | ||||||||
netolk | vrijdag 6 augustus 2010 @ 13:51 | |||||||
Hey, Ik heb een probleem met virtual functies... ik heb een namespace gemaakt in een header genaamd Shape.h
| ||||||||
Cruise.Elroy | vrijdag 6 augustus 2010 @ 13:56 | |||||||
even een recompile ofzo? hij zegt dat Circle geen virtual table heeft, en blijkbaar ergens niet als derived class is gedefinieerd? Geen idee verder. | ||||||||
netolk | vrijdag 6 augustus 2010 @ 14:01 | |||||||
quote:Dat is toch raar want Circle zou toch gewoon een virtual table moeten hebben aangezien zijn base class puur virtueel is? | ||||||||
thabit | vrijdag 6 augustus 2010 @ 14:39 | |||||||
Waarom heb je Circle::Rotate private gemaakt? | ||||||||
netolk | vrijdag 6 augustus 2010 @ 14:41 | |||||||
nou omdat een cirkel roteren niet echt nuttig is... maar ik dacht miss is dat het probleem maar toen ik hem public had kreeg ik nog steeds de zelfde melding... | ||||||||
thabit | vrijdag 6 augustus 2010 @ 14:44 | |||||||
Hij is public in Shape. Dus als je een object van type Shape hebt, en weet niet wat voor Shape het is, moet je wel Rotate erop kunnen aanroepen. Maar goed, dat terzijde. | ||||||||
netolk | vrijdag 6 augustus 2010 @ 14:47 | |||||||
quote:Hmm... daar heb je idd een punt | ||||||||
thabit | vrijdag 6 augustus 2010 @ 14:54 | |||||||
Misschien zit de fout in Shape.cpp, kun je die tonen? | ||||||||
netolk | vrijdag 6 augustus 2010 @ 15:03 | |||||||
Staat ook in mn 1e post maar ik zal hem nog een keertje neerzetten
[ Bericht 4% gewijzigd door netolk op 06-08-2010 15:17:26 ] | ||||||||
thabit | vrijdag 6 augustus 2010 @ 15:06 | |||||||
Dat is een header file, geen cpp file. | ||||||||
netolk | vrijdag 6 augustus 2010 @ 15:16 | |||||||
quote:Ja, iknow ik heb geen .cpp file maar die heb ik voor classes toch ook niet nodig?? Ik heb de functies nog niet verder uitgewerkt, dus nog geen .cpp | ||||||||
thabit | vrijdag 6 augustus 2010 @ 15:18 | |||||||
Dan zit daar dus het probleem: de functies Circle::Rotate en Circle::Draw zijn alleen gedeclareerd, maar niet gedefinieerd. Dat vindt de linker niet zo grappig (vandaar ook een 'ld' error: het compilen gaat op zich goed, alleen het linken wil niet). | ||||||||
netolk | vrijdag 6 augustus 2010 @ 15:19 | |||||||
quote:Hehe, daar kwam ik idd ook net achter... Best wel dom, nouja bedankt in iedergeval | ||||||||
TeringHenkie | vrijdag 6 augustus 2010 @ 15:23 | |||||||
quote:Maar hij roept Rotate en Draw niet aan | ||||||||
thabit | vrijdag 6 augustus 2010 @ 15:25 | |||||||
Nog wat algemene opmerkingen: als je een base class aanmaakt, waar je classes van wilt afleiden, is het raadzaam om ook de destructor virtual te maken. En in de constructor van Circle kun je Point beter als reference doorgeven dan als value. | ||||||||
thabit | vrijdag 6 augustus 2010 @ 15:25 | |||||||
quote:C++ is geen Python. [ Bericht 0% gewijzigd door thabit op 06-08-2010 15:33:57 ] | ||||||||
Cruise.Elroy | vrijdag 6 augustus 2010 @ 15:31 | |||||||
Wel rare error voor een linkerfout. Maar is het nu gefixed? | ||||||||
netolk | vrijdag 6 augustus 2010 @ 15:46 | |||||||
quote:jep quote:hoe zo als reference dan? kost dan minder resources? En die destructor moet ik die in de afgeleide classes ook neerzetten of kan ik dat achterwege laten? (tenzij ik een destructor nodig heb natuurlijk) | ||||||||
Cruise.Elroy | vrijdag 6 augustus 2010 @ 15:52 | |||||||
Die destructor maak je virtual zodat hij (automatisch) kan worden aangeroepen als je afgeleide klassen destruct. Anders krijg je later evt. memory leaks (hoeft eigenlijk alleen als je destructor echt iets doet maar het is wel goed om het aan te leren) En ja, als reference heb je iets minder resources maar in dit geval maakt het niet heel veel uit. | ||||||||
netolk | vrijdag 6 augustus 2010 @ 18:07 | |||||||
ik heb nog een vraagje bestaat er ook iets als #exclude? aangezien je wel #define en #undef hebt... | ||||||||
Cruise.Elroy | vrijdag 6 augustus 2010 @ 18:10 | |||||||
Euh? Nee want met #include wordt de file direct in je parser geramd. Dus dat later weer undo-en is niet te doen. #include zet de inhoud van de file direct tussen je code, het is niet zoals in Java e.d. Je kan dus een losse regel code in een file zetten, en deze dan includen midden in een functie bijvoorbeeld ![]() | ||||||||
progje | vrijdag 6 augustus 2010 @ 18:39 | |||||||
echt, cruise.elroy, jij weet tenminste echt waar je over praat.. ![]() Ik word echt doodmoe van alle programmeurs waarmee ik al heb moeten werken en die, zodra ze hun database connectie niet kunnen instellen via een Wizard, niet weten hoe het moet ![]() Echt schijtziek word ik er van, totaal geen computer kennis meer... Wat maakt het nou uit hoe het geheugen werkt, je propt er toch gewoon een extra bankje bij als het te traag wordt ![]() | ||||||||
thabit | vrijdag 6 augustus 2010 @ 18:46 | |||||||
quote:Da's een kwestie van economie: goede hardware is tegenwoordig goedkoper dan een goede programmeur. | ||||||||
progje | vrijdag 6 augustus 2010 @ 18:49 | |||||||
quote:Nou, als de salaris-eis nou ook eens in overeenstemming was met het gewenste niveau.. Maar dat laat helaas ook nog vaak te wensen over. En allemaal zo heerlijk groot ego, ze vinden zichzelf allemaal de beste en overleggen ho maar ![]() verder ben ik niet gefrustreerd hoor. ![]() Nu werk ik zelf in een omgeving waar ook veel in .Net en C# wordt geprogrammeerd, misschien hoort het ook wel bij dat wereldje ik weet het niet.. | ||||||||
TeringHenkie | vrijdag 6 augustus 2010 @ 20:19 | |||||||
quote:Ik neem aan dat een C++ programmeur wel meer verdient dan iemand die formpjes in elkaar klikt in C#? | ||||||||
progje | vrijdag 6 augustus 2010 @ 20:39 | |||||||
Hehe ja dat zeker.. ![]() Maar ik ken ook genoeg Senior C#/asp.net programmeurs die er werkelijk waar geen drol van begrijpen.. En toch ook een salaris verdienen van in de 4000 euro, maar ja Al hebben we ook eens een Senior C++ programmeur in dienst gehad en ik begreep er destijds (als junior) al meer van dan hij ![]() | ||||||||
TeringHenkie | vrijdag 6 augustus 2010 @ 21:16 | |||||||
Grappig is trouwens wel dat de Assemblies van Microsoft gewoon wrappers om Win32 zijn. Bijvoorbeeld Messagebox.Show roept uiteindelijk gewoon MessageBox aan in user32.dll. Als iets niet kan in C#, is er nog geen developer daar die er een wrapper voor heeft geschreven. ![]() Conclusie: C# voor de GUI, en de snelle/geavanceerde code stop je in een c++ DLL die je dan DllImport ![]() | ||||||||
netolk | vrijdag 6 augustus 2010 @ 23:32 | |||||||
quote:Ja daar was ik al bang voor ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 21:24 | |||||||
quote:Uiteindelijk is elk programma in elke taal op het Windows platform uiteindelijk een wrapper voor de Win32 api, er is geen andere logische manier om Windows "te gebruiken". Hoe hoger het niveau, hoe beter (voor de user) maar (mogelijk) trager. ![]() Dat het anders kan laten Linux ports en Java apps zien, maar daar wordt je echt niet blij van, al is het alleen al het gebruikersgemak, al custom dialogs en lelijke L&F. ![]() Verder kan C# zeker wel sneller zijn dan C++, zelfs sneller dan compiled ASM ![]() | ||||||||
Trollface. | zondag 8 augustus 2010 @ 21:38 | |||||||
Handgeschreven ASM ![]() ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 21:56 | |||||||
quote:Als je met handgeschreven stiekem optimaal bedoelt, dan ja. Handgeschreven ASM is vaak alles behalve optimaal. Niet zo gek als je de intel procs zien icm 8086 ASM. Vaak kan je met C# talen snelheidswinst halen omdat tight loops run-time herschreven worden naar gelang de variabelen. Natuurlijk kan je dit zelf gaan schrijven in ASM, maar dan ben je echt gek. | ||||||||
Trollface. | zondag 8 augustus 2010 @ 22:00 | |||||||
quote:Ik ben nou eenmaal gek ![]() __asm__ {} ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 22:06 | |||||||
Zonde van je tijd ![]() | ||||||||
Trollface. | zondag 8 augustus 2010 @ 22:09 | |||||||
push eax push ecx mov al, 0 mov cl, 5 :lp1 add al, cl dec cl or cl, cl jnz lp1 pop ecx pop eax ![]() | ||||||||
TeringHenkie | zondag 8 augustus 2010 @ 22:16 | |||||||
quote:Dat C# sneller kan zijn dan C++ snap ik wel, maar dan is dat (neem ik aan) alleen maar omdat OF je code brakker is, OF omdat je compiler niet kan optimaliseren. Het probleem met C# is alleen dat je voor de eenvoudigste dingen meteen 3 objecten aan moet gaan maken, wat je waarschijnlijk veel geheugen en cpu-tijd kost. Hoe zit dat nou met de machinecode die uitgevoerd wordt? Ik heb begrepen dat moderne OSen een HAL om je hardware heen bouwen. Mag ik dan ook aannemen dat machinecode wel direct op je processor draait, en dat er alleen interrupts aangeroepen mogen worden die opgevangen worden door je HAL? | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 22:17 | |||||||
@ ASM Tof, maar je code doet niets nuttigs, doet dit bijzonder efficient, en reset zijn waardes aan het einde. ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 22:19 | |||||||
quote:Je code draait gewoon op je CPU, waar anders op ![]() | ||||||||
Trollface. | zondag 8 augustus 2010 @ 22:20 | |||||||
quote:Low-level programming is mijn ding ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 22:23 | |||||||
Waarom ben je dan een webdevver? ![]() | ||||||||
TeringHenkie | zondag 8 augustus 2010 @ 22:26 | |||||||
quote:Dat snap ik, maar de windows kernel mag niet hetzelfde als de HAL, en een applicatie mag niet hetzelfde als de kernel. Hoe wordt dat afgeschermd? Interrupts die worden afgevangen/geblokkeerd oid? | ||||||||
Trollface. | zondag 8 augustus 2010 @ 22:29 | |||||||
quote:Dat ik bij FOK! dev wil niet zeggen dat ik alleen aan webdevving doe ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 22:30 | |||||||
Afaik wordt dat idd met interrupts en dergelijke geregeld. Sowieso heb je je eigenlijk geheugen-ruimtes waardoor je niet meer bij iedereen kan rondkijken. Details o.a. hier: Dit is de processor-side info: http://en.wikipedia.org/wiki/Protected_mode En hier heb je de verschillende permissie-"rings": http://en.wikipedia.org/wiki/Ring_(computer_security) | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 22:32 | |||||||
quote:Nee maar iemand die low-level zit te hacken ( ![]() ![]() | ||||||||
Trollface. | zondag 8 augustus 2010 @ 22:33 | |||||||
De kernel doet o.a. ook zelf interrupts afhandelen dus user-kernelspace kan door de kernel bewaakt worden. ![]() | ||||||||
Trollface. | zondag 8 augustus 2010 @ 22:34 | |||||||
quote:Je weet toch dat dat een snel in elkaar geflanst stukje code is wat in de praktijk niets doet? ![]() Oh, en ik ben begonnen met webdevven ![]() ![]() | ||||||||
TeringHenkie | zondag 8 augustus 2010 @ 22:36 | |||||||
quote:Dat bedoel ik dus. Wat ik eerst niet snapte, was dat ALLE code op je PC uiteindelijk ook op de CPU stacks zit te pushen en weet ik veel. Hoe zorg je dat dat allemaal niet in de weg zit? Ik neem aan dat als een ander proces CPU-tijd krijgt, jouw registertjes ergens worden opgeslagen, en die andere code z'n waardes weer in de registertjes wordt gestopt ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 22:38 | |||||||
quote:Multi-threading en multi-tasking doet zogenaamde context-switching die alles dus idd keurig weg zet. Interrupts e.d. ook natuurlijk: http://en.wikipedia.org/wiki/Context_switch | ||||||||
TeringHenkie | zondag 8 augustus 2010 @ 22:46 | |||||||
quote:HA! Dus eigenlijk was DOS wel een systeem wat multitasking aankon. Immers zouden drivers hun werk nooit kunnen doen ![]() | ||||||||
Trollface. | zondag 8 augustus 2010 @ 22:48 | |||||||
quote:Multitasking is in principe sowieso een must op een OS. ![]() | ||||||||
Cruise.Elroy | zondag 8 augustus 2010 @ 23:00 | |||||||
quote:Waarom zou je multi-tasking nodig hebben voor drivers? Die hoeven toch niet los van een applicatie iets uit te voeren? Nee in DOS werkte alle(?) drivers met interrups, TSR systemen en ingeladen stukken uitvoerbare code. Geen multi-tasking dus. Een muis-driver registereerde een stuk code ergens in een interrupttabel (oid), maar die driver voerde dus zelf geen code uit "los" van de applicatie. Die applicatie riep gewoon driver-code aan waar nodig, en wachtte tot deze klaar was. Als je code wilde uitvoeren "samen" met een applicatie moest je een timer-interrupt aanzette die gewoon elke zoveel ms triggerde en dan jouw code weer uitvoerde. Zoals een trainer van games bijv. Een programma die in het geheugen ligt te wachten totdat hij wordt uitgevoerd heet een TSR. http://en.wikipedia.org/wiki/Terminate_and_Stay_Resident | ||||||||
Trollface. | zondag 8 augustus 2010 @ 23:02 | |||||||
quote:Volgens mij heb ik hier de broncode van MS DOS 5.0 nog liggen, maar ik heb geen zin om hem door te spitten. ![]() | ||||||||
TeringHenkie | zondag 8 augustus 2010 @ 23:08 | |||||||
quote:Maar hoe werkte dat dan als je de muis bewoog? Of als je netwerkkaart data ontving? Werd die pas uit de buffer gehaald als je programma polde of de socket data te verwerken had? | ||||||||
TeringHenkie | zondag 8 augustus 2010 @ 23:56 | |||||||
quote:Volgens mij is dit niet helemaal waar. Als ik in C# een object aanmaak, maakt het framework voor mij een object aan, dat doet de code niet zelf. Ook neem het framework mij GC uit handen. Als ik in C++ een object aanmaak, maakt mijn eigen code voor mij geheugen aan (in een door windows bepaalde geheugenruimte weliswaar). Als voorbeeld: als ik twee ints optel, doet mijn C++ programma dat gewoon in de registers, zonder tussenkomst van een of andere DLL. | ||||||||
netolk | maandag 9 augustus 2010 @ 00:13 | |||||||
quote:Dat is ook de rede dat zware-/besturingsprogramma's doorgaans in C++ geschreven zijn Maar doet C# dat met tussenkomst van DLL's?? Dat zou behoorlijk inefficiënt zijn | ||||||||
Cruise.Elroy | maandag 9 augustus 2010 @ 07:13 | |||||||
quote:Wat is volgens jou het verschl tusen "framework" en "code"? Een C# gaat echt geen DLL gebruiken om ints op te tellen. Het aanmaken van een object gaat ook op eenzelfde manier als in C++, hetzij met iets meer boekhouding. De lijn tussen framework runtime en je "eigen code" is flinterdun, en de compiler zal ze ook gewoon doorelkaar heen compileren. GC is wel een andere issue, maar ook deze is enorm geoptimaliseerd en zal niet via DLL wrappers lopen. Wat ik bedoelde was dat alle IO-functies (key-handling, files, audio, video) allemaal via de Win32 API lopen, in elke applicatie. | ||||||||
Cruise.Elroy | maandag 9 augustus 2010 @ 07:14 | |||||||
quote:C# compileert dat gewoon tot snoeiharde ASM | ||||||||
Cruise.Elroy | maandag 9 augustus 2010 @ 07:16 | |||||||
quote:Al die info stond op je hardware te wachten totdat je het pollde ja. Dat is in Windows nog steeds zo; een driver is geen process, dat zou erg raar zijn. | ||||||||
netolk | woensdag 25 augustus 2010 @ 12:23 | |||||||
Hey, ik heb problemen met het maken van een ico... ik heb op http://www.hackerfactor.c(...)-Ico-Ico-Un-Day.html en op http://en.wikipedia.org/wiki/BMP_file_format gekeken, maar nu werkt de volgende code niet... SPOILERbij de raw data copy (die while(!Read.eof()) loop) komt ie nooit aan bij end of file en krijg ik dus een oneindig groot ico file... weet iemand miss wat ik niet goed doe | ||||||||
thabit | woensdag 25 augustus 2010 @ 12:29 | |||||||
Hier kun je beter gewoon de file-I/O-functies van C gebruiken in plaats van die streamzooi van C++. | ||||||||
Cruise.Elroy | woensdag 25 augustus 2010 @ 13:07 | |||||||
Met operator>> zit je volgens mij formatted data in te lezen, gebruik gewoon getc() oid. Ik weet niet waarom eof() niet triggert, maar ik gebruik het te weinig... gooi in je read loopje een std::cout die de char output die net gelezen is (even casten naar int zodat je de waarde krijgt) dan zie je vanzelf waar het fout gaat. Ik kan me voorstellen dat hij bijv. een integer probeert te lezen in binaire stream vol willekeurige bytes, dan leest ie steeds 0 bytes uit als het niet begint met '0' - '9' | ||||||||
Thomass | woensdag 25 augustus 2010 @ 18:52 | |||||||
quote:Kijk eens naar de functies seekg en read van fstream. Houd er verder rekening mee dat je structs goed gepacked (dus dat iedere char maar 1 byte inneemt ipv 4) | ||||||||
netolk | donderdag 26 augustus 2010 @ 10:35 | |||||||
Het maakt niet uit wat ik doe of ik unformatted data lees of unsigned int/char lees hij blijft in een oneindige loop en geeft geen end of file aan... | ||||||||
Cruise.Elroy | donderdag 26 augustus 2010 @ 11:25 | |||||||
Wat lees je dan uit, zet die zooi op het scherm en kijk waar het mis gaat. Toch niet zo enorm moeilijk? | ||||||||
netolk | donderdag 26 augustus 2010 @ 12:17 | |||||||
quote:nou op een gegeven moment leest ie alleen maar het zelfde getal uit... Ik dacht probeer eerst een een ico te lezen maar daar krijg ik ook allemaal rare code uit dus die structs zullen wel weer eens niet kloppen ![]() | ||||||||
thabit | donderdag 26 augustus 2010 @ 12:39 | |||||||
Die streams die zien het gewoon als een string ofzo. Dus als je de int 1234 op een stream zet met <<, dan zet hij er in feite de string "1234" erop (denk ik). Dat hele streamgebeuren in C++ is geen verbetering ten opzichte van C. (Sowieso kun je voor dit soort simpele file-conversies beter Python gebruiken, maar dat terzijde). | ||||||||
Cruise.Elroy | donderdag 26 augustus 2010 @ 12:44 | |||||||
Je moet ook geen << operator gebruiken bij binary streams. Je wilt gewoon byte-voor-byte die data ophalen en wegschrijven met read en write. Als hij nog maar 1 getal uitleest, welke is dat dan? -1 ofzo? | ||||||||
netolk | donderdag 26 augustus 2010 @ 15:08 | |||||||
quote:nee iets van 236825 ofzo het maakte niet uit of ik binary las en schreef of niet bleef het zelfde getal krijgen... | ||||||||
Cruise.Elroy | donderdag 26 augustus 2010 @ 16:18 | |||||||
quote:Gebruik je nog steeds << ? Want die moet je dus _niet_ gebruiken voor dit soort dingen edit: ik zie dat je hele grote getallen krijgt, dus je bent niet byte voor byte binair aan het lezen. Dat moet je wel doen aangezien een BMP/ICO file vol zit met binaire troep. Gooi dat getal er eens in HEX uit, misschien iets van 0xFFFF of 0x8000: een of andere errorwaarde. | ||||||||
netolk | donderdag 26 augustus 2010 @ 17:05 | |||||||
quote:Probleem is opgelost... Had eerst mn struct maar eens even in C++ geschreven in plaats van die windows meuk met byte enzo en daar hadden ze arrays dus dacht nou dat kan dan ook wel in 1 variabele maar dat kan dus niet XD Bedankt iedereen nu kan ik een ICO tenminste lezen, en moet schrijven ook niet zo moeilijk meer zijn... | ||||||||
Cruise.Elroy | donderdag 26 augustus 2010 @ 19:24 | |||||||
Euh ok, logisch. ![]() | ||||||||
netolk | vrijdag 27 augustus 2010 @ 23:38 | |||||||
kan iemand mij uitleggen waarom dit niet werkt??
EDIT: code foutje [ Bericht 0% gewijzigd door netolk op 27-08-2010 23:44:59 ] | ||||||||
thabit | vrijdag 27 augustus 2010 @ 23:41 | |||||||
if(argc = 2) moet if(argc == 2) zijn | ||||||||
netolk | vrijdag 27 augustus 2010 @ 23:45 | |||||||
quote:umja dat klopte idd ook niet maar het is niet de oplossing ik compile overigens met g++ niet dat dat uit zou moeten maken maar toch zo doet ie het overigens wel
EDIT: vind ik niet netjes geprogrammeerd en volgens mij zou het bovenste gewoon moeten werken [ Bericht 19% gewijzigd door netolk op 28-08-2010 00:07:48 ] | ||||||||
thabit | zaterdag 28 augustus 2010 @ 00:16 | |||||||
O ja, C heeft geen strings, dus dat zijn dan pointers. Om strings te vergelijken kun je de string klasse van C++ gebruiken. string(argv[0]) == string(argv[1]) | ||||||||
netolk | zaterdag 28 augustus 2010 @ 00:21 | |||||||
ja, nu werkt het idd wel bedankt thabit ![]() | ||||||||
Cruise.Elroy | zaterdag 28 augustus 2010 @ 13:44 | |||||||
netolk, je bent bekend met de string-zero opslag in C++ neem ik aan? Een string sla je dus op als een reeks char's, en je point dan naar het begin van de string. het einde van de string wordt aangegeven met een nul (als character kan je het schrijven als '\0') Als je dus twee strings wilt vergelijken moet je dus het volgende doen:
Of gebruik de std::string klasse uit de STL lib van C++, maar mss leuk om precies te weten wat je doet. | ||||||||
netolk | zondag 29 augustus 2010 @ 00:25 | |||||||
quote:Dit klinkt idd logisch had ik zelf nog niet aan gedacht ![]() | ||||||||
Cruise.Elroy | zondag 29 augustus 2010 @ 15:33 | |||||||
Vergeet niet dat je bij elke string() call wel een stukje geheugen alloceert etc. Als je met std::string werkt, probeer dan zo snel mogelijk (en 1-malig) alle inkomende char* naar strings te converteren, en werk daarna met const string& referenties (of pointers) om zo het onnodig aanmaken van strings te voorkomen. ![]() Niet dat je daarmee in de problemen zal komen, tenzij je echt tijdkritieke code gaat schrijven. ![]() | ||||||||
netolk | maandag 30 augustus 2010 @ 23:35 | |||||||
quote:Ik laat hem een tijdelijk object aanmaken voor het if-statement gebeuren zoiets als dit
| ||||||||
Cruise.Elroy | dinsdag 31 augustus 2010 @ 00:06 | |||||||
quote:ja dat mag, maar kijk uit voor bijv:
| ||||||||
netolk | donderdag 2 september 2010 @ 07:10 | |||||||
volgens mij accepterend string ook (const) char strings | ||||||||
thabit | donderdag 2 september 2010 @ 10:50 | |||||||
Elke keer als je a == b doet, dan wordt de methode operator== van a uitgevoerd, met b als input. Dus a.operator==(b) wordt dan uitgevoerd. Nu zal dat in elk geval voor een const string& b gedefinieerd zijn, maar waarschijnlijk dus ook voor een const char* b. | ||||||||
Cruise.Elroy | donderdag 2 september 2010 @ 11:12 | |||||||
ja ik had het nagezocht, en dat is idd zo. Vergeet niet dat std::string een specialisatie is van std::basicstring<> maar deze heeft nog extra functies om handig met de "ouderwetse" string0s uit C om te kunnen gaan ![]()
| ||||||||
netolk | donderdag 2 september 2010 @ 14:26 | |||||||
quote:Top dan kan ik het gewoon zo laten staan dus ![]() | ||||||||
Cruise.Elroy | donderdag 2 september 2010 @ 14:37 | |||||||
Dat kan sowieso, als je er 20.000 per seconde gaat doen, dan wordt het pas een issue ![]() | ||||||||
netolk | donderdag 2 september 2010 @ 21:17 | |||||||
quote: ![]() | ||||||||
thabit | donderdag 2 september 2010 @ 21:20 | |||||||
Premature optimization is the root of all evil. | ||||||||
Cruise.Elroy | vrijdag 3 september 2010 @ 10:15 | |||||||
Ja, maar er vroeg rekening mee houden is wel heel belangrijk. ![]() | ||||||||
netolk | zaterdag 18 september 2010 @ 10:04 | |||||||
Is het ook mogelijk om te zien of de knoppen op je toetsenbord zijn pressed/relased zonder de Windows.h header?? Dat het progje zeg maar op elke unix systeem kan draaien | ||||||||
Cruise.Elroy | maandag 20 september 2010 @ 13:11 | |||||||
Nee, niet makkelijk volgens mij. Bijna alle standaard I/O is min of meer console-achtig. Wat je kan doen is een frame-workje ergens downloaden die cross-platform is en die dingen goed wrapt. | ||||||||
netolk | maandag 20 september 2010 @ 15:05 | |||||||
quote:hmm.. oke bedankt in ieder geval | ||||||||
Cruise.Elroy | maandag 20 september 2010 @ 15:12 | |||||||
Het is trouwens echt een van de meest vervelende "features" van C++, dat je dat niet wat makkelijker kan opvragen, daardoor kan je met "standaard" C++ eigenlijk geen real-time applicaties maken. ![]() | ||||||||
thabit | maandag 20 september 2010 @ 15:32 | |||||||
C++ is dan ook meer een verzameling hacks bij elkaar dan een echte programmeertaal. ![]() | ||||||||
Cruise.Elroy | maandag 20 september 2010 @ 15:38 | |||||||
quote:Troll ![]() | ||||||||
netolk | maandag 20 september 2010 @ 22:21 | |||||||
quote: ![]() ![]() quote: | ||||||||
thabit | maandag 20 september 2010 @ 23:04 | |||||||
Face it, mensen: het is niet goed porteerbaar, het heeft geen geheugenmanagement met garbage collector, het heeft geen goede ondersteuning voor parallelisatie (nee, pthread telt niet). 't Is eigenlijk gewoon een verkapte assembly en alleen handig voor kleine libraryfuncties die tot op de bit geoptimaliseerd moeten zijn. | ||||||||
progje | maandag 20 september 2010 @ 23:14 | |||||||
![]() | ||||||||
Trollface. | dinsdag 21 september 2010 @ 08:10 | |||||||
Ga eens ergens anders trollen. ![]() | ||||||||
Cruise.Elroy | dinsdag 21 september 2010 @ 13:29 | |||||||
quote:Dit klopt allemaal, maar dat komt gewoon omdat de taal op een bepaald abstractieniveau zit. Maakt de taal niet slecht, gewoon krachtiger maar minder geschikt voor RAD. | ||||||||
netolk | dinsdag 21 september 2010 @ 17:01 | |||||||
quote: ![]() | ||||||||
thabit | dinsdag 21 september 2010 @ 17:28 | |||||||
Natuurlijk speel ik advocaat van de duivel hier, maar af en toe heb ik het idee dat de keuze van sommige mensen voor C++ als programmeertaal sterke analogieën met godsdienstwaanzin vertoont. | ||||||||
Cruise.Elroy | woensdag 22 september 2010 @ 16:23 | |||||||
Met zo'n advocaat moet de duivel maar hopen dat ie niet wordt aangeklaagd. | ||||||||
netolk | woensdag 22 september 2010 @ 21:38 | |||||||
Goede avond, ik kwam code tegen voor een "chat" programma'tje alleen is dit dus voor linux geschreven en mis ik de volgende headers:
SPOILERWeet iemand hoe ik deze code onder Windows kan laten werken? PS. Ik gebruik de mingw compiler... | ||||||||
ReWout | woensdag 22 september 2010 @ 21:46 | |||||||
![]() | ||||||||
Cruise.Elroy | woensdag 22 september 2010 @ 21:47 | |||||||
Onder Windows kan je winsock.h gebruiken, werkt nagenoeg hetzelfde, maar je zal hier en daar wat calls moeten versleutelen. | ||||||||
netolk | woensdag 22 september 2010 @ 21:48 | |||||||
quote:Oke bedankt ik zal eens even een beetje gaan kloten met die winsock header en kijken of ik er wat uit kan krijgen... | ||||||||
Cruise.Elroy | donderdag 23 september 2010 @ 10:08 | |||||||
Nog gelukt? Want winsock zou redelijk gelijk moeten zijn aan de standaard berkley sockets interface, zeker voor simpele apps. ![]() http://en.wikipedia.org/wiki/Berkeley_sockets | ||||||||
netolk | donderdag 23 september 2010 @ 20:29 | |||||||
quote:Nou ik ben eerst maar begonnen met het volgen van een tut ipv dat example te draaien | ||||||||
Cruise.Elroy | vrijdag 24 september 2010 @ 11:11 | |||||||
Net even een snelle echo gedraaid met hulp van een snelle opfris door MSDN. ![]() Dit programma echo'ed alles terug totdat hij een zending binnenkrijgt dat begint met 'x'. Enige libfile die je nodig hebt is Ws2_32.lib (in Visual Studio) Sockets zijn echt heel simpel, maar je moet het model even doorhebben van sockets en adressen: Elke verbinding naar de buitenwereld is een socket (maken met socket()) Als je een verbinding wilt ontvangen moet je dus een aanspreekpunt hebben. Eerst koppel je een socket aan een adres. (adres = ip + port) met bind() daarna zet je hem op luisterstand met listen() Als je zelf verbinding wilt maken gebruik je simpelweg connect() Als een verbinding binnenkomt op je luisterende socket, kan deze verbinding worden gebruikt om een nieuwe socket te maken waar je vervolgens mee kan praten met send()/recv(). Dit doe je met accept(). accept() blijft blocken totdat er een verbinding beschikbaar is. (kan je ook anders instellen overigens) Je luister socket blijft overigens ook gewoon doordraaien dus je kan daar steeds accept() op blijven aanroepen om nieuwe inkomende verbindingen op te vangen. Hou ook in de gaten dat elke TCP verbinding uniek moet zijn in zijn begin- en eind-adres. dat betekent dat je dus maar 1 connectie kan hebben van een specifiek adres naar een listen socket (die een vast adres heeft). Als je een uitgaande socket aanmaakt met connect() zal het adres van dit socket ook een willekeurige port meekrijgen tenzij je daarvoor expliciet een bind hebt gedaan, zodat je meerdere verbinden kan maken naar een server vanaf 1 IP. ![]() ![]()
Oh en htons() en co. zijn functies om endian om te draaien etc. Er zijn ook functies om hostnamen op te zoeken (getaddrinfo()) en nog een hele reeks andere handige functies. Let op dat windows naast de standaard socket systemen ook nog allemaal andere toevoegingen heeft gemaakt, die zijn handig maar je kan daarna dus niet makkelijk meer poorten als je die eenmaal gaat gebruiken (beginnen vaak met WSA.....) [ Bericht 16% gewijzigd door Cruise.Elroy op 24-09-2010 12:47:18 ] | ||||||||
netolk | vrijdag 24 september 2010 @ 15:24 | |||||||
Ik heb op deze site ook een paar examples gevonden maar die van jou is ook wel handig ![]() bedankt | ||||||||
Cruise.Elroy | vrijdag 24 september 2010 @ 16:48 | |||||||
Leuke site, behandeld ook Overlapped I/O op een goede manier, dat zie je idd niet vaak ![]() | ||||||||
netolk | vrijdag 24 september 2010 @ 18:36 | |||||||
ik heb nu alleen het probleem... Dat example van die site dus (die rot13server) probeer ik te draaien dat werkt gewoon alleen nu heb ik een client gemaakt die daar mee kan "praten". de connect werkt gewoon client kan data verzenden maar de server kan het niet ontvangen... Weet iemand waar het aan kan liggen?? PS. als ik source code moet posten hoor ik het wel | ||||||||
Cruise.Elroy | zaterdag 25 september 2010 @ 01:05 | |||||||
Is de verbinding in stand gebracht? wat zijn je error-codes voor recv()? gebruik WSAGetLastError om evt extra info te krijgen. ![]() | ||||||||
netolk | zaterdag 25 september 2010 @ 16:35 | |||||||
de error die WSAGetLastError geeft is 10054... De verbinding is gemaakt ect. en de recv van de server creëert dus die error (10054) Op internet staat dat dit de error code is dat de client de connectie verbreekt... Alleen is dit (volgens mij) niet zo [ Bericht 31% gewijzigd door netolk op 25-09-2010 17:02:55 ] | ||||||||
Cruise.Elroy | zaterdag 25 september 2010 @ 19:53 | |||||||
Ja dat zal je toch echt even zelf moeten debuggen, ik denk dat de client gewoon de verbinding verbreekt zodra hij verbinding heeft gemaakt. Iig een program-flow fout van jouw kant waarschijnlijk. ![]() | ||||||||
netolk | zaterdag 25 september 2010 @ 22:46 | |||||||
quote:Ja dat klopt idd het is nu opgelost maar ik kan nergens een duidelijk lijstje vinden van de fout codes van WSAGetLastError()... | ||||||||
Cruise.Elroy | zaterdag 25 september 2010 @ 23:40 | |||||||
http://msdn.microsoft.com/en-us/library/ms740668(v=VS.85).aspx | ||||||||
netolk | zondag 26 september 2010 @ 00:11 | |||||||
dankje ![]() | ||||||||
Cruise.Elroy | maandag 27 september 2010 @ 09:26 | |||||||
gelukt? fuck, nieuw deel [C(++)] voor dummies - Deel 2 [ Bericht 61% gewijzigd door Cruise.Elroy op 27-09-2010 10:17:29 ] |