2012-02-05 31 views

Respuesta

21

@ respuesta de costo links a una discusión que, entre otras cosas, hace esta pregunta que nunca se respondió:

¿Hay alguna razón por la que no puedo incluir windows.h antes Winsock2.h, me da toneladas de errores, pero una vez que cambio su orden, todo está bien ... ¿por qué?

windows.h incluye winsock2.h cuando se compila para las versiones más recientes de Windows, pero para el desarrollo de más edad que incluye winsock.h lugar. El problema no está limitado a solo windows.h, sin embargo. Cada vez que se incluya winsock.h antes de winsock2.h, habrá errores de compilación. La razón es porque los dos archivos DO NOT coexisten muy bien. winsock2.h se diseñó para reemplazarwinsock.h, no extenderlo. Todo lo que se define en winsock.h también se define en winsock2.h. Si se incluye winsock2.h antes de winsock.h, winsock2.h define _WINSOCKAPI_ para evitar que el compilador procese los siguientes winsock.h incluye, y todo está bien. Pero si winsock.h está incluido antes de winsock2.h, winsock2.h no lo detecta e intenta volver a definir todo lo que winsock.h ya ha definido, lo que hace que la compilación falle.

Debe tener mucho cuidado al mezclar código que usa winsock.h con código que usa winsock2.h en el mismo proyecto. Por ejemplo, al escribir su propio código de socket que usa winsock2.h, y el uso de bibliotecas de terceros que todavía usan winsock.h.

6

Debe usar winsock2.h a menos que desee usar Winsock 1.1. winsock2.h es para Winsock 2.

Puede leer más al respecto en el Wikipedia Winsock page.

Cuestiones relacionadas