玩转C科技.NET

从学会做人开始认识这个世界!http://volnet.github.io

导航

用预编译指令符避免多文件工程中重复定义的问题

1、用预编译指令符可以避免在多文件工程中调用文件的时候可能出现的重复定义的现象。

比如:

Main.cpp

#include “Animal.h”

#include “Fish.h”

……

 

Animal.h

class Animal()

{

                  

}

 

Fish.h

#include “Animal.h”

class Fish():public Animal

{

        

}

 

因此在调用Main.cpp的时候先运行

1#include “Animal.h”      复制Animal.h过来

class Animal()

{

                           

}

 

2#include “Fish.h” 复制Fish.h过来

#include “Animal.h”     复制Animal.h过来

class Animal()

{

                                    

}

 

class Fish():public Animal

{

                  

}

 

……

因此最后的文件应该是形如:

class Animal()

{

                           

}

class Animal()

{

                           

}

class Fish():public Animal

{

                  

}

因此重复定义了类

class Animal()

{

                           

}

是显而易见的。

这时候引入预编译指令符的方法来避免这样的现象来发生。

假设在最后的文件中我们来补充预编译指令符的方法:

 

                   #ifndef      ABCD       //如果没有定义ABCD,否则转向endif

                   #define      ABCD       //那么就定义ABCD

class Animal()

{

                           

}

#endif

 

#ifndef      ABCD       //如果没有定义ABCD,否则转向endif

                   #define      ABCD       //那么就定义ABCD

class Animal()

{

                           

}

#endif

 

class Fish():public Animal

{

                  

}

添加蓝色部分就可以避免重复定义了。

因此可以在多文本文件中做如下修改:

Main.cpp

#include “Animal.h”

#include “Fish.h”

……

 

Animal.h

#ifndef      ABCD       //如果没有定义ABCD,否则转向endif

#define      ABCD       //那么就定义ABCD

class Animal()

{

                  

}

#endif

 

Fish.h

#include “Animal.h”

#ifndef      ABCD       //如果没有定义ABCD,否则转向endif

#define      ABCD       //那么就定义ABCD

class Fish():public Animal

{

        

}

#endif

这样当Main.cpp在编译的时候就会忽略重复的定义而避免错误的产生了。

posted on 2008-07-18 20:31  volnet(可以叫我大V)  阅读(1472)  评论(0编辑  收藏  举报

使用Live Messenger联系我
关闭