游戏开发论坛

 找回密码
 立即注册
搜索
查看: 2412|回复: 9

菜鸟跪求:VC多文件组织中的命名空间污染问题

[复制链接]

3

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
发表于 2006-7-16 18:58:00 | 显示全部楼层 |阅读模式
如下程序:(共三个文件)
    //    student.h   类student
        class student{............};
   
    //   student.cpp   类student的实现
         
         #include <iostream>
         #include "student.h"
      
              实现部分略
   
    //     main.cpp
          #include <iostream>
          #include <student.h>
          int main()
         {...........}
         
          编译后,生成 main.obj 和student.obj 。
    将他们连接时, main中和studen中都有 #include <student.h>和 #include <iostream>
    不是对class student 的重复定义么?
       对每个文件 编译 是没问题的,但我就是搞不懂为何 连接 能通过。
         我找了好几本 C++的书看了 “文件包含”的章节都没有相关的内容。在潭浩强的C++教材中有"命名空间污染"一章提到了 “重复包含”的内容,但还是没有让我完全解释上述问题,希望各位大虾帮助解决。
                       

            

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-7-16 20:23:00 | 显示全部楼层

Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

命名空间污染和多重包含是两码事

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-7-16 20:27:00 | 显示全部楼层

Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

// student.h
#ifndef ....
#define ....


#endif

60

主题

1319

帖子

1319

积分

金牌会员

Rank: 6Rank: 6

积分
1319
发表于 2006-7-16 20:27:00 | 显示全部楼层

Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

头文件里一般没有实现代码,不会引起链接错误

18

主题

573

帖子

573

积分

高级会员

Rank: 4

积分
573
发表于 2006-7-17 01:35:00 | 显示全部楼层

Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

有了#ifdef ... #endif或者#pragma once等技术,重复包含的问题就可以解决了,很多的C++书中都提到这个问题,索性现在也不是什么大的问题。

3

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2006-7-17 10:20:00 | 显示全部楼层

Re: Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

griffin2006: Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

// student.h
#ifndef ....
#define ....


#endif


是这样吗:
// student.h
#ifndef  STUDENT
#define STUDENT

        class student {...................};

#endif
     
        

5

主题

63

帖子

63

积分

注册会员

Rank: 2

积分
63
发表于 2006-7-17 13:31:00 | 显示全部楼层

Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

就这样的

103

主题

1432

帖子

1458

积分

金牌会员

Rank: 6Rank: 6

积分
1458
QQ
发表于 2006-7-17 13:43:00 | 显示全部楼层

Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

声明可以多次,定义只能一次.而#include指令拷贝的声明.

3

主题

11

帖子

11

积分

新手上路

Rank: 1

积分
11
 楼主| 发表于 2006-7-17 13:57:00 | 显示全部楼层

Re: Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

polelf: Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

就这样的



  谢谢

0

主题

1037

帖子

1037

积分

金牌会员

Rank: 6Rank: 6

积分
1037
发表于 2006-7-17 14:17:00 | 显示全部楼层

Re: Re: Re:菜鸟跪求:VC多文件组织中的命名空间污染问题

zkylw_1: Re: Re:菜鸟跪求:VC多文件组织中的命名空间污染问题



是这样吗:
// student.h
#ifndef  STUDENT
#define STUDENT

        class student {.............

这样可以但不是很好的写法,最好改为
#ifndef  STUDENT_H
#define STUDENT_H
...
#endif

#ifndef  INCLUDED_STUDENT
#define INCLUDED_STUDENT
...
#endif
避免与程序的其他地方产生冲突。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2026-1-24 23:07

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表