2010-04-13 10 views
8

Cada vez que se hace una pregunta y se necesita un texto de referencia, nunca veo que se refiera MSDN C++ Language Reference.Microsoft C++ Language Reference

Estaba navegando y personalmente siento que está muy bien escrito.

¿Hay alguna razón específica por la que no se utiliza con tanta frecuencia como un estándar?

¿Es porque contiene algunas características específicas de VC++?

+0

votante cerrado: ¿Ayuda si se hace una wiki comunitaria? – Lazer

+1

No es un voto cerrado, es un voto Migrate to Meta. –

+0

Supongo que la mayoría de la audiencia de etiquetas C++ en SO no usa MSVC como su primera opción. Hay una fuerte presencia de GCC, muchos OPs lo asumen. No pondrán mucho interés en una referencia de la compañía. Ciertamente no cubre el mismo terreno que la referencia del idioma oficial. No tiene sentido. –

Respuesta

3

La respuesta es bastante simple: la referencia de MSDN no es autoritativa. Le dice cómo se comporta el compilador de Microsoft, y sí, suele coincidir con lo que dice el estándar. Pero cuando alguien pregunta cómo el lenguaje C++ trata con alguna situación, solo un texto tiene autoridad: el estándar ISO.

Al responder preguntas sobre C++, las personas tienden a hacer referencia al estándar. Si pregunta específicamente acerca de cómo MSVC lo implementa, entonces MSDN sería una fuente perfectamente válida. Pero la mayoría de las preguntas son simplemente sobre C++.

O para decirlo de otra manera: si MSDN contiene un error tipográfico, entonces MSDN está equivocado. Si el estándar ISO contiene un error tipográfico, entonces así es como se define el idioma.

8

Creo que es porque aquellos de nosotros que hace referencia a una referencia de referencia el estándar real en sí.

+0

Aunque el estándar real no está en línea, pero los borradores del actual y el siguiente son – Mark

+4

Esto. Si desea una fuente definitiva en C++, use ISO 14882: 2003. MSDN puede ser confiable, o no, pero no tiene autoridad. –

+0

@Derrick Turk: ¡esta norma ISO 14882: 2003 C++ no es gratuita! No esperaba esto. – Lazer

2

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

creo que esa es la razón básica. Por ejemplo, a menudo contiene información en C++/CLI, no solo en C++.

La referencia de VC++ 2010, creo, es cuidadosa al distinguir qué parte está en el C++ propiamente dicho y qué parte está en C++/CLI. Pero para referirse al estándar, por supuesto, es mejor referirse al estándar en sí mismo. La documentación de VC++ también hace referencia al estándar con bastante frecuencia.

0

Un ejemplo interesante: ¡¡¡miren todos esos __XXX keywords !! (El estándar de C++ no tiene ninguno)

+0

@Rooke: hmm. .. confuso. Aunque la página dice 'Los nombres con caracteres de subrayado iniciales son extensiones de Microsoft. 'En la parte superior. – Lazer

+2

Esto se debe a que el estándar los reserva para los implementadores ... (_xyz y __xyz) – conio

+0

@conio: _xyz solo está reservado en el espacio de nombres global. –

2

MS ha sido bastante bueno aclarando qué partes del documento son específicas de MS o no, así que estoy de acuerdo en que las referencias de MS son bastante buenas (particularmente si estás interesado en extensiones de MS)

general que se refieren a los documentos de normalización si estoy en busca de información acerca de "lo que es estándar" porque:

  1. los tengo (ver Where do I find the current C or C++ standard documents? para los enlaces a cómo conseguir el suyo)
  2. que' re archivos PDF que me parece más fácil de buscar y leer que los documentos basados ​​en la Ayuda de MSDN basadas en la Web o Windows
  3. son definitivos (por lo que responder a preguntas sobre el estándar)

El mayor inconveniente es que aún no tengo una versión electrónica del estándar C90.

0

El estándar de C++ define cómo funciona el lenguaje C++, la referencia de lenguaje de Microsoft C++ define cómo funciona la implementación de Microsoft de ese lenguaje.

Así que si quiere saber qué comportamiento está garantizado independientemente del compilador, The Standard es su guía. Algunos detalles y ciertos casos de esquina quedan definidos allí para la implementación y cada implementación puede definir extensiones al idioma, por lo que si desea usar esas propiedades específicas de MSCV, la Referencia del lenguaje de Microsoft debería explicarlas.

La mayoría de las preguntas sobre SO en C++ no requieren explícitamente una respuesta específica de MSVC que podría no ser cierta para otros compiladores. Por lo tanto, al hacer referencia a The Standard se obtiene una respuesta general independiente del compilador, mientras que MS Language Reference no tiene mucho peso para nada más que MSVC.