在几个文件中分别定义了同一个相同的函数
void trace2(const char* msg) 
{ cout << "Component 1:\t" << msg << endl ;}
但是几个文件并没有互相包含,但编译却出现错误说重复定义。为什么?
有什么好办法解决??

解决方案 »

  1.   

    #ifndef ___YOURDEF_H___//文件开头
    #define ___YOURDEF_H___//内容#endif//文件末尾
      

  2.   

    不是编译错误吧?应该是链接错误。
    两个解决办法:
    1) 在函数前加 static。
    2) 只在一个文件中写函数体
       void trace2(const char* msg) 
       { cout << "Component 1:\t" << msg << endl ;}
       其他文件中写:
       extern void trace2(const char* msg);
      

  3.   

    的确是在"制造"错误.不过还是有办法的,将函数定义为
    static void trace2(const char* msg)
    即可.