C 中的类型重定义

2008-02-23 05:28:19来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

这几天工作时碰到一个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

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: C语言经典100例(二)

下一篇: 在C 子类中重定义基类数据成员时