Multidesk.be » Forums » C en C++ » instellingen Netbeans C++

  • Pagina
  • 1 van 1
0 gasten lezen dit onderwerp.
^ Onderwerp geschreven door Merijn op woensdag 25 maart 2009 om 19:47:44.
Merijn's avatar
Multiviteit: 300
Hallo iedereen

Ik wou graag eens met C++ beginnen experimenteren en wou dit doen via Netbeans.
Ikheb de tutorials van netbeans gevolgd en kan wel een applicatie runnen.
Maar het probleem is dat bij code

#include <iostream>

een foutteken staat, en dat het niet gevonden wordt.
Daardoor moet ik in de code ook

std::cout << "hello multidesk";

gebruiken.

Normaal moet het toch lukken door gewoon cout ".."; te gebruiken, dus zonder std::.

Weet iemand hoe ik in Netbeans alles correct kan instellen ?
Alvast bedankt.

^ Reactie #1 geschreven door thekid op woensdag 25 maart 2009 om 20:20:52.
thekid's avatar
Multiviteit: 5273
Moderator
uwe namespace std gaan instellen :)

C++ is weer lang geleden, maar met gebruiker maken van de std kan je die problemen oplossen :)

*edit*
bovenaan uw programma (allé, na de normale includes :))

CODE
  1.  
  2. using namespace std;
  3.  
Deze tekst werd het laatst bewerkt voor 28.88 % door thekid op woensdag 25 maart 2009 om 21:00:17.
"Human beings make life so interesting. Do you know, that in a universe so full of wonders, they have managed to invent boredom." - Death in Hogfather
^ Reactie #2 geschreven door NightCreature op woensdag 25 maart 2009 om 21:14:54.
NightCreature's avatar
Multiviteit: 1196
MSc.
std is een namespace en als je "using namespace std;" niet gebruikt moet je een volledige naam opgeven en die is voor cout "std::cout". Gebruik using namespace commandos trouwens niet in headers want dat kan heel erg vreemde compile errors geven.
Bij komend alle STL headers in C++ hebben geen .h extensie als je er een met .h ziet dan kun je er al meteen vanuit gaan dat er C code wordt gebruikt en geen C++.

Een include kan trouwens overal voorkomen thekid vooral als je een template aan het schrijven bent moet je de implementatie in de header doen. Om te voorkomen dat andere je implementatie zien kun je na de defenitie een #include gebruiken. "#include" wordt echter tijdens het compilen vervangen door de volledige inhoud van de file die je na "#include" gebruikt in deze file gedumpt. Vandaar ook dat meeste headers met "#pragma once" of
"#ifndef __HEADER_GUARD__"
"#define __HEADER_GUARD__" beginnen. Als guard wordt meestal de filename in hoofdletters gebruikt met een "_" voor spaties en punten. Bijna alle defines en preprocessor commandos in C/C++ zijn Hoofdletters, dit is gedaan om makkelijk onderscheid te maken. Een ander punt dat je je beter kunt aanleren in om GEEN gebruik te maken van hungarian notatie, dit is een variable naam die begint met de eerste letter van het type dat je gebruilkt.
Als je platform #pragma once ondersteund kun je die beter gebruiken dan een ifndef ... endif guard. Het is namelijk makkelijk om de laatste #endif instructie te vergeten.

Alle regels die met "#" beginnen zijn PreProcessor commandos. Er is ook een verschil tussen #include "MyHeader.h" en #include <MyHeader.h>, de "" zoeken in vanaf je huidige directory(die waar je project file staat) en <> zoekt in de folders die je in de IDE hebt ingesteld naar de gevraagde header.

Ik ben zelf geen fan van de netbeans IDE en meeste C++ programmas worden met VS of een text editor en GCC gescreven.

http://www.cplusplus.com/ voor tutorials en language bescrijving ook zeer uitgebreide STL documentatie.

Hmmz 2 uur geleden nog in C++ geprogrammeerd lolz, nu programmeer ik iedere dag in C++.
hier een voorbeeld van een header en cpp file.
Header
CODE
  1.  
  2. #pragma once
  3. #include "IShader.h"
  4.  
  5. class VertexShader : public IShader
  6. {
  7. public:
  8.         VertexShader(void);
  9.         ~VertexShader(void);
  10.         void cleanup();
  11.  
  12.         bool compileShader(const String& shaderfilename, LPDIRECT3DDEVICE9 device, DWORD shaderflags = 0);
  13.         bool createShader(LPDIRECT3DDEVICE9 device);
  14.         bool setActiveShader(LPDIRECT3DDEVICE9 device);
  15. protected:
  16. private:
  17.         LPD3DXBUFFER m_shaderbuffer;
  18.         LPD3DXBUFFER m_shadererrorbuffer;
  19.         LPDIRECT3DVERTEXSHADER9 m_vertexshader;
  20. };
  21.  

Source file (cpp file)
CODE
  1.  
  2. #include "VertexShader.h"
  3. #include "GlobalMacros.h"
  4. #include <iostream>
  5.  
  6. using namespace std;
  7.  
  8. VertexShader::VertexShader(void)
  9. {
  10. }
  11.  
  12. VertexShader::~VertexShader(void)
  13. {
  14. }
  15.  
  16. bool VertexShader::compileShader( const String& shaderfilename, LPDIRECT3DDEVICE9 device, DWORD shaderflags )
  17. {
  18.         return SUCCEEDED(D3DXCompileShaderFromFile(shaderfilename.getWString().c_str(), NULL, NULL, "main", D3DXGetVertexShaderProfile(device)
  19.                                                                                          , shaderflags, &m_shaderbuffer, &m_shadererrorbuffer, &m_uniforms));
  20. }
  21.  
  22. bool VertexShader::createShader( LPDIRECT3DDEVICE9 device )
  23. {
  24.         return SUCCEEDED( device->CreateVertexShader((DWORD*)&m_shaderbuffer, &m_vertexshader) );
  25. }
  26.  
  27. void VertexShader::cleanup()
  28. {
  29.         DL_SAFE_RELEASE(m_vertexshader);
  30.         //Cleanup map
  31. }
  32.  
  33. bool VertexShader::setActiveShader( LPDIRECT3DDEVICE9 device )
  34. {
  35.         return SUCCEEDED( device->SetVertexShader(m_vertexshader));
  36. }
  37.  
Deze tekst werd het laatst bewerkt voor 1.56 % door NightCreature op woensdag 25 maart 2009 om 21:24:07.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
^ Reactie #3 geschreven door Merijn op woensdag 25 maart 2009 om 21:23:20.
Merijn's avatar
Multiviteit: 300
Ik had dat waarschijnlijk wel kunnen googelen..

In ieder geval: bedankt ! _O_

Ik krijg wel nog altijd de warning:

welcome.cc:42:20: warning: extra tokens at end of #include directive

En mijn include staat nog altijd gemarkeerd.
Wat zou ik daar moeten aan doen ?

Tja, C++ wil ik ook maar eens bekijken. Naast Java ook nog C++ kunnen voorleggen is een voordeel hé ;)
Al blijf ik een cobol-lover :D:D

^ Reactie #4 geschreven door NightCreature op woensdag 25 maart 2009 om 21:34:01.
NightCreature's avatar
Multiviteit: 1196
MSc.
ARGH Cobol is extreem oud en voornamelijk alleen maar gebruikt voor documenten opmaak.
C/C++ wordt al vaak gezien als heel erg oud.

warnings kun je altijd negeren maar het is vaker beter om ze wel optelossen dit zorgt er namelijk voor dat je programma ook met een nieuwere versie van je IDE kan worden gecompiled (heel veel warnings zijn deprecation warnings).
Deze warning betekent dat je de volgende regel in je programma hebt staan
#include <iostream>;
die ";" is niet nodig achter een header, dit is niet nodig zoals ik al zei #include <iostream> wordt door de preprocessor vervangen door de inhoud van de file "iostream". ; is een statement terminator en wordt als een No Operation gezien dus je kunt er zoveel van achter elkaar zetten als je will maar het doet niks, behalve misschien een warning geven.
Waarom je je warnings ook moet oplossen is omdat je in de compile instellingen kunt zeggen dat alle warnings als errors moeten worden gezien. Als er dan warnings in je programma voorkomen compilt het geheel niet, vaak kun je zo ook cast operaties voorkomen. Casts kunnen duur zijn in C++ een cast van een float data type naar int en anders om is hier een voorbeeld van.

C++ is heel erg performance gericht.
Deze tekst werd het laatst bewerkt voor 22.37 % door NightCreature op woensdag 25 maart 2009 om 21:36:26.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
^ Reactie #5 geschreven door Merijn op woensdag 25 maart 2009 om 21:40:51.
Merijn's avatar
Multiviteit: 300
hmmm die ; verandert niks aan de zaak.

Ik heb gezien dat ik dat kan instellen maar als ik "no warnings" kies, krijg ik natuurlijk da warning niet meer, maar het include statement blijft gemarkeerd. :(

Tja cobol, ik werk dan ook op de mainframe hé ;)
^ Reactie #6 geschreven door NightCreature op donderdag 26 maart 2009 om 20:33:32.
NightCreature's avatar
Multiviteit: 1196
MSc.
het kan ook een "}" zijn geweest of een ander teken zijn geweest na een #include commando wordt een newline character verwacht. Dat is ook alles dat de warning zegt.

Leuke compile problemen gebeuren wanneer je iets onderaan in een header vergeet, de compiler geeft dan een probleem in de CPP file waar je de header gebruikt.
I need thought completion.
Shaders, een beetje vreemd maar wel lekker (voor de ogen dan he)
2.83Ghz Q9550 HD4850 512MiB 4GiB 1333Mhz DDR3 RAM
http://paulintheuk.blogspot.com
FE Programmer @ Codemasters (Front End)
  • Pagina
  • 1 van 1

Snel-antwoordformulier
Toon uitgebreid antwoordformulier Bericht nalezen Bericht plaatsen