Menghalang Pentakrifan Semula Fail Pengepala dalam C untuk winsock2.h
Dalam C , menghalang fail pengepala daripada disertakan beberapa kali adalah penting untuk mengelakkan definisi semula kesilapan. Isu ini sering timbul apabila fail pengepala disertakan dalam berbilang fail sumber, yang membawa kepada pengisytiharan pendua dan ralat penyusunan.
Dalam kes menyertakan winsock2.h, pertimbangan khusus diperlukan kerana interaksinya dengan windows.h.
Punca Ralat:
Masalah yang diterangkan dalam mesej ralat yang diberikan disebabkan oleh memasukkan windows.h sebelum winsock2.h. Secara lalai, windows.h termasuk winsock.h, yang mengandungi takrifan yang bercanggah dengan definisi dalam winsock2.h.
Penyelesaian:
Untuk menyelesaikan isu ini, terdapat dua pendekatan:
Susun Sertakan Pesanan:
Pastikan winsock2.h disertakan sebelum windows.h dalam pernyataan anda sertakan. Ini akan menghalang windows.h daripada memasukkan winsock.h dan menyebabkan ralat takrifan semula.
#include <winsock2.h> #include <windows.h> // ... #include "MyClass.h" // Includes winsock2.h
Takrifkan _WINSOCKAPI_:
Tentukan makro prapemproses WINSOCKAPI sebelum memasukkan windows.h. Ini akan menghalang windows.h daripada memasukkan winsock.h, walaupun ia disertakan sebelum winsock2.h.
#define _WINSOCKAPI_ // Stops windows.h from including winsock.h #include <windows.h> // ... #include "MyClass.h" // Includes winsock2.h
Tambahan Pertimbangan:
Atas ialah kandungan terperinci Bagaimana untuk Mencegah Ralat Definisi Semula `winsock2.h` dalam C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!