1

抛开良好的做法不谈,我正试图让自己的编码变得更容易一些。

是否可以制作一个头文件来处理无数的包含,以便源可以只包含一个头文件?

编辑:你们中的一些人正在引用 Cocoa。我忘了提到 C/C++ 编程。它在标签中,但我忘了把它放在这里。

编辑:没关系。似乎我这个问题踩到了蚁丘。学过的知识。

4

4 回答 4

8

当然这是可能的,但我不认为这是一种好的编程风格。

您将增加源代码依赖性,如果不重新编译所有内容,您将无法重新编译项目的一部分,并且您将忘记什么依赖于什么。

就个人而言,我会说不要这样做。

于 2013-03-20T21:01:27.933 回答
2

这不值得。

大量编译器时间、CPU 周期和树用于处理#include指令。如果您不需要它,请不要费心加载它。

于 2013-03-20T21:04:00.603 回答
2

听起来您想要一个预编译的标头。虽然它确实有一个缺点,即您忘记了哪个源文件依赖于其他外部代码,但预编译的头文件本身可以显着提高编译速度。

减轻我上面提到的缺点的一个好做法是避免在该预编译头文件中包含您自己的头文件。这样至少你可以确保你自己的类之间没有奇怪的依赖关系。

于 2013-03-20T21:09:51.317 回答
1

我会说这取决于你想要达到的目标。如果你为 mac os x 开发一个 cocoa 应用程序,默认模板会让你通过一个头文件包含他们所有的 cocoa 库:

<Cocoa/Cocoa.h>

包括:

#import <Foundation/Foundation.h>
#import <AppKit/AppKit.h>
#import <CoreData/CoreData.h>

其中包括:

#include <CoreFoundation/CoreFoundation.h>

#import <Foundation/NSObjCRuntime.h>

#import <Foundation/NSArray.h>
#import <Foundation/NSAutoreleasePool.h>
#import <Foundation/NSBundle.h>
#import <Foundation/NSByteOrder.h>
#import <Foundation/NSCalendar.h>
#import <Foundation/NSCharacterSet.h>
#import <Foundation/NSError.h>
#import <Foundation/NSException.h>
#import <Foundation/NSFileHandle.h>
#import <Foundation/NSFileManager.h>
#import <Foundation/NSFormatter.h>
#import <Foundation/NSHashTable.h>
#import <Foundation/NSHTTPCookie.h>
#import <Foundation/NSHTTPCookieStorage.h>
#import <Foundation/NSNotification.h>
#import <Foundation/NSNotificationQueue.h>
#import <Foundation/NSNull.h>
#import <Foundation/NSNumberFormatter.h>
#import <Foundation/NSObject.h>

etc...

您最终会包含 200 多个标题,嵌套在(至少)4 个级别上。它们通过.pch文件(预编译头文件)包含所有内容。编译速度非常快。

于 2013-03-20T21:04:54.690 回答