
現在自作ライブラ(staticLibrary)を制作しているのですが、
stdafx.h,targetver.hを消して、include.hと言うh内にstdafx.h,targetver.hの処理を入れました。
include.hの中には自分が作ったhを入れて、cpp側でinclude.hを読んで処理をしている感じにしています。
こうしている理由としては、include.hを呼べば他のhを使えるようにしたかったからです。
質問1
ここからが本題なのですが、stdafx.hは必ず最初に読まないと行けない?ルールみたいなのがあって処理をinclude.hに移したら、include.hを最初に呼ばなくては行けなくなりました。
(※呼ばない場合,EOFがなんちゃら見たいなエラーになります。)
それを回避するために、プロパティ設定で「必ず使用されるインクルードファイル」に設定して回避したのですが、この処理自体大丈夫なのでしょうか?(エラー,ワーニングが出てないので怖くて)
質問2
include.hの中に#inlucde <vector>など入れているのですが、include.hで宣言したh自体は#pragma onceだけしか宣言していないのにstd::vectorが使えるのが謎です大丈夫でしょうか?
質問3
今まで話してたinclude.hを「プリコンパイル済みヘッダー」にしているのですが大丈夫でしょうか?
分かる方がいらっしゃいましたら助言いただけると嬉しいです。
No.1ベストアンサー
- 回答日時:
普通は stdafx.h はプリコンパイルヘッダーに使われるヘッダー名ですね。
これはそのまま、プリコンパイルヘッダーとして使った方がトラブルが少なくてすむと思います。自力でトラブルを解決できて、自力で設定の変更が出来るのなら何も言うことはないのですが、そうでなければデフォルトの使い方をした方が無難です。
stdafx.h は単独で使用して、他のヘッダーでインクルードしたりしない方がいいです。
また、プリコンパイルするヘッダーは stdafx.h にまとめた方がいいですね。stdafx.h に含めるヘッダーは C/C++ の標準ヘッダー、Windows SDK の標準ヘッダーに留めるべきだと思います。外部ライブラリーを使用していて、ほとんど変更がないのなら、それらも入れてもいいとは思います。
自分で作成したヘッダーなどはほとんど変更がないのならいいのですが、頻繁に修正があると、プリコンパイルして全体のビルド時間を削減する意味がなくなってしまいます。
ヘッダーをひとまとめにしてインクルードする方法はたまに見かけますが、私はあまりやりません。そうすると、1つヘッダーを直しただけですべてのソースをコンパイルすることにもなりかねませんので、ソースを分割する意味が半減してしまいます。
なるほど、ありがとうございます
stdafx.hを復活させて標準ヘッダーやDirect関係もそこに入れて使うようにします。
こう言う知識を持った人が身近にいないので本当に助かります!!!
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- C言語・C++・C# win10で、正確な待ち時間の作り方 6 2023/02/14 18:28
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
EOFにならない?
-
なぜ、C++の標準ヘッダをインク...
-
ヘッダーファイルがインクルー...
-
LinuxのQtに関する質問です。
-
findnext();について
-
テイラー展開とその精度について
-
JPEGやPNGが読めるLoadImage関数
-
「Aに対するBの割合」と「Aに対...
-
C言語での引数の省略方法
-
DWORDの実際の型は何でしょうか
-
複数桁10進数の*桁目だけを抽出...
-
プログラムでの数字につく”f”の...
-
静的でないメンバ関数の呼び出...
-
Aの値からBの値を除するとは??
-
2進数の足し算(C言語)
-
ある商品のロス率を5%見込み、...
-
*をユーザーが入力した数字の数...
-
有効数字について 以前質問をし...
-
2÷3などの余りについて
-
visualstudio C# テキストボッ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
なぜ、C++の標準ヘッダをインク...
-
switch文のエラーについて
-
VC++で文字列から任意の文字を...
-
構文エラーが出ているのですが...
-
gccでコンパイル時のエラー
-
空ENTERの判別
-
vectorのイテレータを大小比較...
-
JPEGやPNGが読めるLoadImage関数
-
C++で、テキストファイルを一行...
-
std::wstringのメモリリークに...
-
enumの値から定義名を文字列化...
-
CStringとString
-
#define中の#のエスケープ
-
std::map の const 修飾について
-
#include "fstream.h"
-
_tcscat がうまくいきません(V...
-
C言語のポインターで詰まっている
-
構造体配列のvectorへの変換と...
-
C++での <iostream.h>と<iostre...
-
ヘッダーファイルがインクルー...
おすすめ情報