1、 XXX.h 的头文件是不是自动与 xxx.cpp 文件对应的?
2、
我的xxx.cpp 声明一个函数 say();
另外一个 yyy.cpp 函数也声明一个 say();
xxx.h 中定义一个 say();的函数
xxx.cpp 和 yyy.cpp 都有一个 #include "xxx.h"
最后 main.cpp 也 #include "xxx.h"
那么当 main.cpp 调用 say(); 会怎么样?
3、xxx.h 有 #include <iostream.h> 
   yyy.h 有 #include <ddraw.h> main.cpp 也有一个#include <iostream.h> 和 #include <ddraw.h> 等等
如果 main.cpp 把 xxx.h 和 yyy.h include 进来的话,算不算重复定义?
如何避免?
刚入门,有些迷惑,请大家指教一下~~谢谢!

解决方案 »

  1.   

    1、 XXX.h 的头文件是不是自动与 xxx.cpp 文件对应的?
    不是2、
    会产生编译错误,根本通不过编译。3、避免重复定义的方法是在.h文件中
    #ifndef XXXXX
    #define XXXXX  .....//your code#endif
      

  2.   

    我也是刚学,*.h 与 *.cpp 的对应需要自己写的,声明应该在 *.h 里,定义在 *.cpp 中,不知道对不对,其它的也不太清楚,自己试一下。一个人学很枯燥,希望以后多交流  *^_^*
      

  3.   

    0 你指的C++是纯粹的C++,还是指MS VC++的MFC呀?我按前面的来回答你。
    1 一般是。但是它们没有对应关系。你需要在CPP中INCLUDE这个H文件才可以用。
    2 如果SAY是一个全局函数,不在类中,你这样子做会有编译错误!除非你的两个SAY的参数不一样。还有,这与H中的声明无关系,在XXX与YYY中无须包含头文件。
    3 不会重复定义。因为,在H文件中已防止了这一点。一般情况下,这样子写:
    #ifndef ...
    #define ...
    #endif或者
    #pragma once
      

  4.   

    恩,还有一个问题

    xxx.h 中声明 say() 这个涵数
    xxx.cpp 中#include "xxx.h" 并实现其函数那么为什么在 main.cpp中只要把 xxx.h include 进去
    然后在 main.cpp 调用 say(); 函数的时候它会找 xxx.cpp 中的 say() 函数呢?