C++ 一个非常难的问题求解

qq_31630289 2016-04-16 12:30:53
之前有学过JAVA,刚接触C++不久,发现C++很多源码在逻辑代码之前的函数外部区域出现大量的定义申明,少则几十行,多则数千行,其中包括了头文件,等定义宏,而且其中穿插逻辑判断,宏定义函数等等,比如以下这种:
#include <windows.h>
#include <mmsystem.h>
#include <iostream.h>
#include <conio.h>
#include <stdlib.h>
#include <malloc.h>
#include <memory.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
#include <math.h>
#include <io.h>
#include <fcntl.h>
#ifdef __cplusplus
extern "C" {
#endif
#pragma region Application Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP)
#define DefineHandleTable(w) ((w),TRUE)
#define LimitEmsPages(dw)
#define SetSwapAreaSize(w) (w)
#define LockSegment(w) GlobalFix((HANDLE)(w))
#define UnlockSegment(w) GlobalUnfix((HANDLE)(w))
#endif /* WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_APP) */
#pragma endregion
#pragma region Desktop Family
#if WINAPI_FAMILY_PARTITION(WINAPI_PARTITION_DESKTOP)
#define GetCurrentTime() GetTickCount()
#define EXIT_SUCCESS 0
#define EXIT_FAILURE 1
_ACRTIMP __declspec(noreturn) void __cdecl exit(_In_ int _Code);
_ACRTIMP __declspec(noreturn) void __cdecl _exit(_In_ int _Code);
_ACRTIMP __declspec(noreturn) void __cdecl _Exit(_In_ int _Code);
_ACRTIMP __declspec(noreturn) void __cdecl quick_exit(_In_ int _Code);
_ACRTIMP __declspec(noreturn) void __cdecl abort(void);

请问一个新手,如何在如此众多交错的符号中理解这些预定义,头文件的作用和功能呢?
而且C++命名各种下划线驼峰,前缀单词缩写成1个字符,非常不好理解
还有一个问题就是,在头文件中include了许多从未使用过的头文件,会怎么什么影响吗?
有什么好的方法可以迅速的学习并且理解常见的头文件各种专有名词,术语,符号吗?
有什么好的方法可以快速导入自己使用函数的头文件吗(像JAVA的IDE一样的工具)?
看到别人源文件写的头文件代码,再看看自己可怜的几个include,瞬间产生了巨大的挫败感....
...全文
270 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
qq_31630289 2016-04-17
  • 打赏
  • 举报
回复
感谢大家的回答,第一次发帖提问,不清楚结贴的规则,本来想平均分的,可惜失败了... 看来这个问题只有以后深入学习才能理解了.
列子汤问 2016-04-16
  • 打赏
  • 举报
回复
如果是自己写的头文件,那也是需要整理规范的。和java整理类包差不多啊。
stephen_csdn 2016-04-16
  • 打赏
  • 举报
回复
这种很难很难的问题只有问赵老师了
小灸舞 2016-04-16
  • 打赏
  • 举报
回复
如果楼主真的是个新手,没多大必要去了解,只要会通过接口调用就行了,慢慢的自然就会了解。 可以将全部头文件都包含在一个特殊的头文件中,但是强烈建议你不要这样做。可以做但不表示这样做是适当的。 当修改了头文件,就会使得直接或者间接引用了那个头文件的cpp文件需要重新编译。cpp编译是很慢的。你这样做的话,几乎全部cpp文件都会间接引用了头文件,工程稍微大一点,即使在任何一个头文件做一点点修改,也会编译很久。 另外将所有头文件都堆在一起,相互的依赖关系就很难分清楚,代码也跟项目绑得太死。当你想将这个项目的代码转移到另一个项目使用的时候,就变得更加困难。 如果include的头文件都是不需要修改的头文件,比如windows,库头文件,然后使用预编译头文件,是值得推荐的,vc自己也这么干的。
flying_music 2016-04-16
  • 打赏
  • 举报
回复
刚接触C++就搞这些东西不合适吧,我都学了两年了还没整过这么复杂的东西呢,先把基础的语法细节学一下,自己写几个头文件包含一下,慢慢再去搞这些源代码吧,源代码中的很多宏定义要求对底层很熟悉的,你刚从java转过来真心不好搞的
renwotao2009 2016-04-16
  • 打赏
  • 举报
回复
区分头文件源文件,用什么数据或函数等就include什么头文件,不会不用就include,理解自己编写的源文件和引用的库之间的区别
huatian5 2016-04-16
  • 打赏
  • 举报
回复
以前看结题报告也出现这种复杂头文件的,蒙圈了
lm_whales 2016-04-16
  • 打赏
  • 举报
回复
如果不是希望全盘理解库函数,不用看库的头文件 知道那个函数,需要包含那个头文件即可
ID870177103 2016-04-16
  • 打赏
  • 举报
回复
头文件不是给你理解的,要不然也不需要那么多文档了

64,648

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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