嵌套的include语句便于c/c++编程

Nested include statements for ease of programming c/c++

本文关键字:c++ 编程 include 语句 嵌套      更新时间:2023-10-16

除了良好的实践,我正试图使编码对我自己来说更容易一点。

是否有可能使头文件处理无数的包含,以便源可以只包含一个头文件?

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

编辑:没关系。问这个问题好像是踩到了蚁丘。教训。

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

你将增加源代码依赖,你将无法在不重新编译所有内容的情况下重新编译项目的一部分,并且你将无法跟踪哪些依赖于哪些。

我个人建议不要这样做。

不值得。

大量的编译器时间、CPU周期和树花在处理#include指令上。如果你不需要它,就不要加载它了

听起来你想要一个预编译的头文件。虽然它的缺点是您无法跟踪哪个源文件依赖于其他外部代码,但预编译的头文件本身可以显着提高编译速度。

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

我想说,这取决于你想要实现什么。如果你为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文件(预编译头文件)的所有内容。