Winsock重复包含

winsock2.h里面已经定义了_WINSOCKAPI_宏,这个宏就是为了防止重复包含winsock.h,所以只需要在所有没有编译通过的cpp文件最开始,包含winsock2.h即可。

#ifndef _WINSOCK2API_
#define _WINSOCK2API_
#define _WINSOCKAPI_   /* Prevent inclusion of winsock.h in windows.h */
时间: 2024-09-30 13:45:49

Winsock重复包含的相关文章

c++ --#ifdef、#ifndef和重复包含

关于避免头文件的重复引用 #ifdef .和 #ifndef 测试某个宏是否被定义,经常用于避免头文件的重复引用. 头文件的重复引用往往是由于包含嵌套造成的,比如 func.cpp文件包含如下头文件: //func.cpp文件中 #include "A.h" #include "B.h" 而 A.h中包含了 B.h: //A.h文件中 #include "B.h" 这意味着在 func.cpp文件对应的编译单元中,头文件 B.h被引用了两次,这就

C/C++函数重复定义、头文件重复包含、互相包含问题

1.避免头文件重复包含 // test.h 此段宏的意思是如果定义了宏变量TEST_H_则不再定义它 #ifndef TEST_H_ #define TEST_H_ //头文件内容 #endif 或者 // test.h 告诉预编译器只包含一次 #pragma once 2.避免重复定义 不要将函数定义放置在头文件里面,正确的做法是头文件放置函数声明,源文件放置函数定义.因为源文件是分别编译的,假如头文件放置了函数定义,包含该头文件的每一个源文件都会定义相应的函数,从而导致重复定义.但是几种情况

C++ 头文件重复包含解决之道

我们在C/C++编程中,经常出现这种类型的错误:error: redefinition of 'struct student'或者error: previous definition of 'struct student'. 字面来看,指的是重新定义或者先前已定义.下面我将针对这一类型问题给出一套系统的解决方案,看了以下文章后,相信以后对于这种问题将会胸有成竹,对于程序的设计也更加合理. 开门见山,我讲给出一个具体的例子. 1.实例 struct.h struct student { char

cocos2d-x 扩充引擎基类功能 引起的头文件重复包含问题的分析

c++ 头文件包含 原因的分析:   c++  头文件的循环引用是指: .h 里面的里面的头文件的相互包含的,引起的重复引用的问题.cpp 里面包含头文件是不存在重复引用的问题(因为CPP没有#ifndef #define #endif 这个). 关键的原因是:#ifndef #define #endif 引起的.  翻译一下就是  如果没有定义 包含, 如果定义了 就不包含了. 由于 宏是全局唯一的,所以只会包含一次.这就是引起重复包含的原因.这些问题的解决办法:http://my.oschi

防止头文件的重复包含问题

在我们自己编写 C/C++的头文件时,可能会忽略一点:用一些处理机制来避免头文件的重复包含,因为头文件的内容在预编译时是把头文件的内容完全拷贝到引入的地方替换头文件的包含命令,而包含的头文件可能有包含很多内容,所以要是重复包含头文件,可能会使预编译后的源文件代码冗余量很大,造成空间上的浪费. 1. #pragma once 2. #ifndef #define #endif 它们具体实现如下: 假定此时要保证头文件HeadFile.h不会被重复包含,那么两种方法对应的方式如下: 1. #prag

头文件被重复包含,嵌套包含的两层含义

http://www.cnblogs.com/bluestorm/archive/2011/11/04/2298126.html 说明: 写代码的时候头文件命名知道要加 #ifndef xxxx #define xxxx #endif 但是我把实现都放在了 .h文件中,然后出错了...所以头文件包含,只知其一不知其二,恩,就是所谓的 //a.h #ifndef _A_H_ #define _A_H_ int max(int a, int b) { return a > b ? a:b; } #e

【转载】防止变量重复定义、头文件重复包含、嵌套包含

[转自] http://hi.baidu.com/zengzhaonong/blog/item/8a8871062d481f7f03088106.html #include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码: #include "x.h"#include "x.h" 显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码.但是下面的代码:#include "a.h"#include "

头文件重复包含(转)

#include文件的一个不利之处在于一个头文件可能会被多次包含,为了说明这种错误,考虑下面的代码:#include "x.h"#include "x.h" 显然,这里文件x.h被包含了两次,没有人会故意编写这样的代码.但是下面的代码:#include "a.h"#include "b.h" 看上去没什么问题.如果a.h和b.h都包含了一个头文件x.h.那么x.h在此也同样被包含了两次,只不过它的形式不是那么明显而已. 多重包

#ifndef#define#endif防止头文件重复包含

#ifndef 主要目的:防止头文件的重复包含和编译. 如果在h文件中定义了全局变量,一个c文件包含同一个h文件多次,如果不加#ifndef宏定义,会出现变量重复定义的错误:如果加了#ifndef,则不会出现这种错误. 1 #ifndef x //先测试x是否被宏定义过 2 #define x 3 程序段1 //如果x没有被宏定义过,定义x,并编译程序段 1 4 #endif 5 程序段2 //如果x已经定义过了则编译程序段2的语句,"忽视"程序段 1