刚学C++ 1个星期,对预编译的一些问题

gzchrishu 2003-08-19 11:20:09
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 进来的话,算不算重复定义?
如何避免?


刚入门,有些迷惑,请大家指教一下~~谢谢!
...全文
83 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
gzchrishu 2003-08-19
  • 打赏
  • 举报
回复
恩,还有一个问题

xxx.h 中声明 say() 这个涵数
xxx.cpp 中#include "xxx.h" 并实现其函数

那么为什么在 main.cpp中只要把 xxx.h include 进去
然后在 main.cpp 调用 say(); 函数的时候它会找 xxx.cpp 中的 say() 函数呢?
wpmsoft 2003-08-19
  • 打赏
  • 举报
回复
0 你指的C++是纯粹的C++,还是指MS VC++的MFC呀?我按前面的来回答你。
1 一般是。但是它们没有对应关系。你需要在CPP中INCLUDE这个H文件才可以用。
2 如果SAY是一个全局函数,不在类中,你这样子做会有编译错误!除非你的两个SAY的参数不一样。还有,这与H中的声明无关系,在XXX与YYY中无须包含头文件。
3 不会重复定义。因为,在H文件中已防止了这一点。一般情况下,这样子写:
#ifndef ...
#define ...
#endif

或者
#pragma once

efsp 2003-08-19
  • 打赏
  • 举报
回复
我也是刚学,*.h 与 *.cpp 的对应需要自己写的,声明应该在 *.h 里,定义在 *.cpp 中,不知道

对不对,其它的也不太清楚,自己试一下。一个人学很枯燥,希望以后多交流 *^_^*
ruihuahan 2003-08-19
  • 打赏
  • 举报
回复
1、 XXX.h 的头文件是不是自动与 xxx.cpp 文件对应的?
不是

2、
会产生编译错误,根本通不过编译。

3、避免重复定义的方法是在.h文件中
#ifndef XXXXX
#define XXXXX

.....//your code

#endif
gzchrishu 2003-08-19
  • 打赏
  • 举报
回复
........

16,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧