2010-04-13 17 views
8

Ogniqualvolta viene posta una domanda e è necessario un testo di riferimento, non viene mai visualizzato MSDN C++ Language Reference.Riferimento lingua Microsoft C++

Lo stavo sfogliando e personalmente ritengo che sia estremamente ben scritto.

Esiste qualche motivo specifico per cui non viene utilizzato tutte le volte che viene utilizzato come standard?

È perché contiene alcune funzionalità specifiche di VC++?

+0

close-voter: aiuta se questo è reso un wiki della comunità? – Lazer

+1

Non è un voto ravvicinato, è un voto Migrate to Meta. –

+0

Suppongo che la maggior parte del pubblico di tag C++ in SO non utilizzi MSVC come prima scelta. C'è una forte presenza nel GCC, molti OP lo assumono. Non metteranno molta partecipazione in una società di riferimento. Certamente non copre lo stesso terreno del riferimento linguistico ufficiale. Non ha molto senso –

risposta

3

La risposta è abbastanza semplice: il riferimento MSDN non è autorevole. Ti dice come si comporta il compilatore di Microsoft, e sì, lo di solito corrisponde a coincide con quello che dice lo standard. Ma quando qualcuno chiede come il linguaggio C++ si occupa di qualche situazione, solo il un testo ha qualche autorità: lo standard ISO.

Così, quando rispondono alle domande sul C++, le persone tendono a fare riferimento allo standard. Se si chiede in particolare su come MSVC lo implementa, MSDN sarebbe una fonte perfettamente valida. Ma la maggior parte delle domande riguarda semplicemente il C++.

O per dirla in un altro modo: se MSDN contiene un errore di battitura, MSDN è sbagliato. Se lo standard ISO contiene un refuso, allora è così che viene definita la lingua.

8

Credo che sia perché quelli di noi riferimento a un riferimento riferimento lo stesso standard.

+0

Sebbene lo standard attuale non sia in linea, le bozze di corrente e quella successiva sono – Mark

+4

. Se vuoi una fonte definitiva su C++, usa ISO 14882: 2003. MSDN può essere affidabile, oppure no, ma non è autorevole. –

+0

@Derrick Turk: questo standard ISO 14882: 2003 C++ non è gratuito! Non me l'aspettavo. – Lazer

2

Is it because it contains some VC++ specific features?

penso che sia il motivo di base. Ad esempio, spesso contiene informazioni su C++/CLI, non solo C++.

Riferimento VC++ 2010, penso, è attento a distinguere quale parte è nel C++ e quale parte è in C++/CLI. Ma per fare riferimento allo standard, ovviamente è meglio fare riferimento allo standard stesso. Anche la documentazione VC++ si riferisce allo standard abbastanza spesso.

0

Un esempio interessante: basta guardare tutti quelli __XXX keywords !! (Lo standard C++ non ne ha)

+0

@Rooke: hmm. .. confusionario. Anche se la pagina dice "I nomi con underscore principali sono le estensioni Microsoft". – Lazer

+2

Questo perché lo standard li riserva per implementatori ... (_xyz e __xyz) – conio

+0

@conio: _xyz è riservato solo nello spazio dei nomi globale. –

2

MS è stato piuttosto bravo a chiarire quali parti del documento sono specifiche o meno MS, quindi sono d'accordo sul fatto che i riferimenti MS sono piuttosto buoni (in particolare se sei interessato alle estensioni MS).

Io generalmente fare riferimento alle normative docs se sto cercando informazioni su "ciò che è normale", perché:

  1. li ho (vedi Where do I find the current C or C++ standard documents? per i collegamenti a come ottenere il vostro)
  2. hanno' re i PDF che trovo più facile la ricerca e leggere rispetto alle web-based o la Guida di Windows basati su documentazione MSDN
  3. sono definitive (per quanto rispondere alle domande sullo standard)

Il più grande svantaggio è che non ho una versione elettronica dello standard C90, tuttavia ..

0

Lo standard C++ definisce come funziona il linguaggio C++, il riferimento al linguaggio Microsoft C++ definisce come funziona l'implementazione di Microsoft di tale linguaggio.

Quindi, se volete sapere quale comportamento è garantito indipendentemente dal compilatore, The Standard è la vostra guida. Alcuni dettagli e alcuni casi angolari vengono lasciati per essere definiti dall'implementazione e ogni implementazione può definire estensioni della lingua, quindi se si desidera utilizzare tali proprietà specifiche MSCV, il linguaggio di riferimento di Microsoft dovrebbe spiegarle.

La maggior parte delle domande SO su C++ non richiede esplicitamente una risposta specifica MSVC che potrebbe non essere vera per altri compilatori. Quindi riferirsi a The Standard fornisce una risposta generale, indipendente dal compilatore, mentre il riferimento al linguaggio MS non avrebbe molto peso per nient'altro che MSVC.