c++包含头文件好还是重新定义好
A.h
struct A
{
int a;
int b;
}; B.cpp
在B.cpp里面用到这个结构体
有两种方法
.自己定义一个一模一样的结构体
struct A
{
};
.包含A.h头文件 第一种感觉有点蛋疼同样的结构体定义两次,是不是重复了
第二种包含别人的头文件,会带来编译的小麻烦,而且这样模块之间的关联性变大了,感觉也不好
大家觉得哪种方法好?为什么呢?
不要重复发明轮子 , 除非这个轮子满足不了你的需求
先问一个问题,如果别人改了struct A,比如删掉了int b或者加了个int c,那你的B.cpp是不是也要改?
如果是,那么包含A.h比较好。不管是编译的小麻烦,还是模块之间的关联性,都不是你的代码或者设计带来的问题,而是根本无法避免的。
看了这两个回答后,还是包含头文件好
c++包含头文件好还是重新定义好的更多相关文章
- include包含头文件的语句中,双引号和尖括号的区别是什么?
		
include包含头文件的语句中,双引号和尖括号的区别是什么? #include <> 格式:引用标准库头文件,编译器从标准库目录开始搜索 尖括号表示只在系统默认目录或者括号内的路径查找 ...
 - C/C++不同文件夹下包含头文件的方法及#include的使用
		
转自:http://blog.sina.com.cn/s/blog_6e0693f70100so42.html 本文主要介绍了如何不同文件夹下使用预处理器指示符#include. 假设我们有如下一个工 ...
 - C++中#include包含头文件带 .h 和不带 .h 的区别
		
C++中#include包含头文件带 .h 和不带 .h 的区别? 如 #include <iostream> 和 #include <iostream.h> 包含的东西有哪些 ...
 - include包含头文件的语句中,双引号和尖括号的区别
		
include包含头文件的语句中,双引号和尖括号的区别 #include <>格式:引用标准库头文件,编译器从标准库目录开始搜索 #incluce ""格式:引用非 ...
 - ZT 头文件包含其实是一想很烦琐的工作 第一个原则应该是,如果可以不包含头文件
		
当出现访问类的函数或者需要确定类大小的时候,才需要用头文件(使用其类定义) http://blog.csdn.net/clever101/article/details/4751717 看到这个 ...
 - 在.h和.cpp中包含头文件的区别
		
1.在.h中包含头文件,是为了声明一系列这个头文件的变量等,可能会产生重复包含的问题: 2.在.cpp中包含头文件只是为了实现这个头文件或者使用其中的方法,不会有重复包含的问题,所以尽量在源文件中包含 ...
 - C++包含头文件时尖括号和双引号区别
		
原文链接:http://c.biancheng.net/cpp/biancheng/view/66.html 如果你还看一些别的C++教程,那么你可能很早就发现了,有些书上的#include命令写作# ...
 - APUE包含头文件"apue.h"问题
		
下载源码 从unix高级编程书籍官网下载书籍的上的所有源码. wget http://www.apuebook.com/src.tar.gz 解压这个文件 tar -zxvf src.tar.gz 解 ...
 - C++ 包含头文件 和 宏的使用 和 条件编译
		
1 #define命令剖析 1.1 #define的概念 #define命令是C语言中的一个宏定义命令,它用来将一个标识符定义为一个字符串,该标识符被称为宏名,被定义的字符串称为替换文本. ...
 
随机推荐
- Download FFmpeg
			
Builds Static builds provide one self-contained .exe file for each program (ffmpeg, ffprobe, ffplay) ...
 - 远程管理服务 Windows Remote Management (WS-Management)
			
Windows Remote Management (WS-Management) Windows 远程管理(WinRM)服务执行 WS-Management 协议来实现远程管理.WS-Managem ...
 - 淘宝JAVA中间件Diamond详解(二)---原理介绍
			
转:http://blog.csdn.net/anhuidelinger/article/details/70314744 大家好,通过第一篇的快速使用,大家已经对diamond有了一个基本的了解.本 ...
 - oneapm的技术博客(简书),用来追溯群里的讨论,mark
			
http://www.jianshu.com/users/572133740c3f/latest_articles
 - Windows利用命令行快速清除以及建立密码
			
我们Win10一般是没有管理员权限的!这就要求我们获取管理员权限了,一般有两种方法获取,我就介绍下面一种最简单的 老操作:WIn+R打开本窗口,输入:taskmgr 建立密码(administrato ...
 - 使用zbar 解码二维码 条形码
			
#!/usr/bin/env python # coding: u8 import os import zbar import Image import urllib import uuid def ...
 - 小米miui系统怎么关闭文件管理里的热门视频和表情?
			
小米miui系统怎么关闭文件管理里的热门视频和表情? 打开"文件管理"后,切换到"手机"选项卡. 然后,点击屏幕右上角的一排竖点. . 在弹出的菜单中点击&qu ...
 - java的IO操作:System类对IO的支持。
			
目标: 1,掌握SYStem对IO的三种支持: system.out system.in system.err 2,掌握system.out及system.err的区别. 3,掌握输入,输出重定向. ...
 - 【精】iOS GCD 具体解释
			
一.介绍 1.什么是GCD? Grand Central Dispatch.是苹果公司开发的一套多核编程的底层API. GCD首次公布在Mac OS X 10.6,iOS4及以上也可用.GCD存在于l ...
 - atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案  v3 q39
			
atitit.线程死锁 卡住无反应 的原因in cmd调用的解决方案 v3 q39 1. 问题::线程死锁 卡住无反应1 1.1. 分类:: cmd调用, net io , file io ...