1

良い習慣は別として、私はコーディングを自分自身にとって少しだけ簡単にしようとしています。

ソースが 1 つのヘッダーだけをインクルードできるように、無数のインクルードを処理するヘッダー ファイルを作成することは可能ですか?

編集: Cocoa について言及している人もいます。C/C++ プログラミングについて言及するのを忘れていました。タグにありましたが、ここに入れるのを忘れていました。

編集:気にしないでください。この質問で蟻塚を踏んだようです。学んだ教訓。

4

4 に答える 4

8

確かにそれは可能ですが、それは良いプログラミング スタイルとは言えません。

ソース コードの依存関係が増え、すべてを再コンパイルしないとプロジェクトの一部を再コンパイルできなくなり、何が何に依存しているかを見失うことになります。

個人的には、やらないほうがいいと思います。

于 2013-03-20T21:01:27.933 に答える
2

プリコンパイル済みヘッダーが必要なようです。どのソースファイルが他のどの外部コードに依存しているかを見失うという欠点がありますが、プリコンパイル済みヘッダー自体がコンパイル速度を大幅に向上させます。

上記の欠点を軽減するための良い方法は、プリコンパイル済みヘッダーに独自のヘッダーを含めないようにすることです。そうすれば、少なくとも、自分のクラスが互いに奇妙な依存関係を持たないようにすることができます。

于 2013-03-20T21:09:51.317 に答える
2

それはそれだけの価値はありません。

#includeディレクティブの処理には、かなりの量のコンパイラ時間、CPU サイクル、およびツリーが費やされます。必要ない場合は、わざわざロードしないでください。

于 2013-03-20T21:04:00.603 に答える
1

それはあなたが何を達成したいかによると思います。Mac OS X 用の cocoa アプリケーションを開発する場合、デフォルトのテンプレートでは、1 つのヘッダー ファイルを通じてすべての 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...

(少なくとも) 4 つのレベルでネストされた 200 を超えるヘッダーを含めることになります。.pchそれらには、ファイル (プリコンパイル済みヘッダー)を介してすべてが含まれます。コンパイルするのはめちゃくちゃ速いです。

于 2013-03-20T21:04:54.690 に答える