VC - Vaikea kysymys!

A

Ahmed Osama

Guest
Jos joku käyttää VC luoda uuden luokan, löytää outoja asioita kirjoitettu alusta tiedosto/ / CEquParser.h: käyttöliittymä CEquParser luokan./////////////////////////////////////////////////// ////////////////////# if! määritelty (AFX_CEQUPARSER_H__ACCB3DAE_4F18_4E1B_B084_CEF3AB97079A__INCLUDED_)# define AFX_CEQUPARSER_H__ACCB3DAE_4F18_4E1B_B084_CEF3AB97079A__INCLUDED_# jos _MSC_VER> 1000# pragma kerran# endif / / _MSC_VER> 1000luokan CEquParser
(
julkisia:
CEquParser ();
virtual ~ CEquParser ();

);
[/color][color = brown] # endif / /! määritelty (AFX_CEQUPARSER_H__ACCB3DAE_4F18_4E1B_B084_CEF3AB97079A__INCLUDED_)
[/ color]jollakin on ajatus, mikä se on?ja miksi

 
Shame On You jos et tiedä ensimmäinen # ifndef (tai # if! Määritelty (...)) / # define lausunnot

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Räpyttää" border="0" />

.Mutta haluat tietää, mitä ne merkitsevät siten, että on hyvä asia!

Ne saa header-tiedostoja!

On vartioimaan C tiedostot useita inkluusion ja header-tiedostot.

Esimerkki:

--- tyyppejä. h ---
typedef unsigned char uint8
------------------

--- serialPort. h ---
# include "types.h"
-----------------

--- pistorasiat. h ---
# include "types.h"
------------------

--- socketToSerial. CPP ---
# include "serialPort.h"
# include "sockets.h"
/ / Täältä saat virheen tyyppi uint8 on määritelty useita kertoja
---------------------------

Ja kun käytät vartiointi lausunnot, toinen sisällyttäminen types.h ei tehdä C-tiedoston.Ensimmäisen kerran se saavuttaa # ifndef se näkee, että tämä Preprocessor muuttujaa ei ole määritelty niin edelleen ja arvioi koodin välinen ensimmäinen # ifndef ja # endif alaosassa tiedosto (ja määritellään Preprocessor muuttuja. Toinen kun se haluaa sisällyttää types.h (vuodesta sockets.h) se katso, että Preprocessor muuttuja on määritelty, joten se ohittaa toisen kerran types.h kuuluu jonnekin. (siis kaikki on mukana, kun etkä ole kiinnittämään huomiota tähän asiaan!

Nimi muuttuja on ilmainen.Käytän loogiset nimet suurimman osan aikaa (kuten nimi, luokka ja _h_ takana.) Microsoft Visual C käyttää yksilöllisten tunnisteiden ilman mitään loogista meanig (se vain on ainutlaatuinen

<img src="http://www.edaboard.com/images/smiles/icon_wink.gif" alt="Räpyttää" border="0" />

).Olet vapaasti valita mitä haluat (niin kauan kuin kukin otsikko tiedosto hankkeessa käytetään eri nimellä)Toinen
# jos _MSC_VER> 1000
# pragma kerran
# endif / / _MSC_VER> 1000

näyttää olevan Microsoftin version vartiointi
siitä MSDN:
# pragma kerran
Täsmennetään, että tiedosto, jossa pragma asuu, otetaan mukaan (avata) vain kerran, jonka kääntäjä on rakentaa.Yhteinen käyttää tätä Pragma on seuraava:

Olen varma, että se on se on hyvää myös.Se näyttää olevan tarpeeton.(vaikka mielestäni voi nopeuttaa rakentamista prosessin suurissa hankkeissa.)

 
Tiedän # ifndef (tai # if! Määritelty (...)) / # define lausuntoja.mutta ajattelin, että ehkä jokin tiennyt ainutlaatuinen asia, mitä se tarkoittaa .. miten kääntäjä luotu?

 
Olen pahoillani "Hävetkää".Se on vain, että minulla on tiedettävä paljon "ohjelmoijien" (<- Ilmoitus lainausmerkkejä), joka juuri sanoi: "En tiedä, mitä tämä tekee, joten poista se!".Joten se ei directect teidän henkilö, älä loukkaannu se!

Lyhyt selvitys siitä edellä

Tässä järjestyksessä:
# ifndef TheUniqueVariableGuardingTheMultipleInclusionOfThisHeaderFile_h_
# define TheUniqueVariableGuardingTheMultipleInclusionOfThisHeaderFile_h_
...
# endif / / TheUniqueVariableGuardingTheMultipleInclusionOfThisHeaderFile_h_

käytetään vartioimaan otsikko tiedosto on sisällytetty useita kertoja C / C -tiedosto ennen kokoamisessa.
Kuten ehkä tiedätte typedef voidaan määrittää vain kerran, kun laatimista C / C -tiedosto.Kun ylä-tiedoston (joka sisältää typedef) sisältyy kaksi kertaa C / C -tiedosto kääntäjä tuottaa virheen typedef oli määritelty ennen.
Käyttämällä vartiointi lausuntoja, ettei näin tule käymään!

Se on syy käyttää niitä!Sinun tulisi käyttää niitä, koska se tekee koodauksen iso projekti jakaa helpompaa!Selvittämään, mitä se tekee juuri aion käyttää esimerkiksi minun aiempi asettaa.Ennen kääntäjä laatii socketToSerial.cpp, esikäsittelijän suoritetaan.Tämä luo uuden socketToSerial.cpp kaikki esikääntäjä komentoja käsitellään.
Uusi tiedosto näyttää tältä:
--- socketToSerial. CPP ---
typedef unsigned char uint8 / / alkaen # include "serialPort.h"
typedef unsigned char uint8 / / alkaen # include "sockets.h"
---------------------------
Ja kun kääntäjä pyrkii kokoamaan tämän tiedoston, se tuottaa virheen!

Kun vartiointi lausunnot, joissa käytetään tässä, maininnat seuraavasti tiedosto olisi luotu:
--- socketToSerial. CPP ---
typedef unsigned char uint8 / / alkaen # include "serialPort.h"
/ / From # include "sockets.h" (vartiointi muuttuja types.h oli jo määritelty niin mitään täällä!
---------------------------

Antharax

 
Ittle anotation ...

Quote:

....
Ehkä jokin tiennyt ainutlaatuinen asia, mitä se tarkoittaa .. miten kääntäjä luotu?
 

Welcome to EDABoard.com

Sponsor

Back
Top