编译器重复定义错误:error C2371: 'SIZE' : redefinition; different basic types

我们常常会定义自己工程用的数据类型,可能会与Windows的基本数据类型冲突。

vs会报重复定义错误:error C2371: ‘SIZE‘ : redefinition; different basic types

解决方法:欺骗编译器

#define SIZE wSIZE
typedef long SIZE;
#undef SIZE
typedef int SIZE;

int _tmain(int argc, _TCHAR* argv[])
{
	SIZE n = 0;		//SIZE = int
	wSIZE wN = 0;	//wSIZE = long

	return 0;
}

编译器重复定义错误:error C2371: 'SIZE' : redefinition; different basic types

时间: 2024-10-07 01:14:25

编译器重复定义错误:error C2371: 'SIZE' : redefinition; different basic types的相关文章

C语言头文件中定义全局变量导致重复定义错误

合作方升级SDK后,程序编译出现变量重复定义的错误,通过错误提示无法找到什么位置重复定义了,但确定是引入新SDK后才出现的错误,从SDK的头文件中查找,最终发现在头文件中定义了全局变量 我们的项目在多个头文件中include了SDK的头文件,所以相当于这个全局变量在多个头文件中定义了,因此报错. 总结:头文件不要有任何全局变量的定义出现

Objective-C中常量重复定义的解决方案

今天在项目中用到一些常用的字符串,于是我直接创建了一个constant.h文件用#define来定义. 后来在网上看各位大神都建议用字符串常量来定义,于是我把所有的宏定义都换成了NSString * const,比如NSString * const LTNNextStep = @"下一步"; 该.h文件主要在两个类中使用,但是#import该文件后发现了一个链接问题: ld:11 duplicate symbols for architecture x86_64 clang: erro

解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载

解决VS2010中winsock.h与winsock2.h冲突(重复定义)——转载 当这两个头文件顺序颠倒时,编译会出现许多莫名其妙的错误,错误如下: 1>…\include\ws2def.h(91) : warning C4005: 'AF_IPX' : macro redefinition 1>…\include\winsock.h(460) : see previous definition of 'AF_IPX' … 或者这个错误 #error "ws2tcpip.h is 

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

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

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

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

extern 用法,全局变量与头文件(重复定义)

http://www.cnblogs.com/chengmin/archive/2011/09/26/2192008.html 用#include可以包含其他头文件中变量.函数的声明,为什么还要extern关键字,如果我想引用一个全局变量或函数a,我只要直接在源文件中包含#include<xxx.h> (xxx.h包含了a的声明)不就可以了么,为什么还要用extern呢??这个问题一直也是似是而非的困扰着我许多年了,今天上网狠狠查了一下总算小有所获了: 头文件 首先说下头文件,其实头文件对计算

modelsim中,错误 Error: already declared in this scope ()

仿真软件modelsim中,错误 Error: already declared in this scope () 在定义这个信号前其它模块接口信号中调用了这个信号,modelsim仿真报错,通过把信号定义挪到调用模块前面问题解决. 可能是modelsim有要求,在块里边出现之前,必须先做声明.modelsim中,错误 Error: already declared in this scope (),布布扣,bubuko.com

c++工程重复编译与重复定义

#ifndef #define #endif防止的是"重复编译",而不是"重复定义"重复编译可能造成重复定义,但重复定义的来源不只有重复编译 从代码变成可执行的程序,需要两个步骤编译和链接编译开始时,将所有#include头文件的地方替换成该头文件的代码在编译阶段,编译所有源文件成为模块,各模块中的每个变量与函数都得到了属于自己的空间在链接阶段,各个模块被组合到一起 #ifndef能够防止在编译阶段,一段代码被重复编译,并且由此可以避免一个变量被重复定义但它不能防止

关于C/C++头文件重复定义的思考

1.什么叫重复定义 我们在写大型项目的时候,文件多,关系复杂.往往会引起头文件重复定义的问题. 什么叫头文件重复定义呢? 举个最简单的例子: 有一个头文件"c.h",在"a.h"中存在两次对"c.h"头文件的引用.在"a.h"中有如下语句: <span style="font-size:18px;">#include "c.h" #include "c.h"