手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>程序设计>C/C++>列表

C 中的类型重定义

来源:互联网 作者:west263.com 时间:2008-02-23
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!
这几天工作时碰到一个C 的编译错误(我使用的是Visual C 7.0),说是有一个类重复定义,仔细想想我们的这个项目也是做了好几个Release了, 内部代码应该不会有这样的低级错误, 真把类型给重复定义了,检查结果正如我预料的相同。 就这样, 我左右没找到原因,被一个编译错误给卡在那里了。(在我的概念中, 程式错误的等级为:编译错误->链接错误->逻辑错误, 此错误属于最低级 )。这时我仔细看了一下错误提示, 发现重复定义是由于从两个不同的路径包含了同一个头文档而引起的,同事也建议从另外一个路径打开工程试试, 这才慢慢发现了原因。这个原因可能有些拗口,而事实上要出现这种错误也有些曲折 让我从不同情况下的类型重定义来解释一下吧。

  

C 中的三种类型重定义

我总结的类型重定义情况有三。

1 没有在文档头加#pragma once指示符。

Type1.h:

//#pragma once

class Type

{

};

Main.cpp:

#include "Type1.h"

#include "Type1.h"

int main(int argc, char *argv[])

{

return 1;

}

#pragma once的作用是确保本文档只被编译一次,假如没有在Type1.h中加这句话那么在main.cpp里面包含了两次Type1.h 就相当于在main.cpp里面定义了两次Type类, 自然就是类型重定义了。

2

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!