分割コンパイルを行っているのですが、うまくいかず、解決法も見出せないので、質問させてもらいます。
ファイル1
#include <stdio.h>
#include "ファイル2.c"
FILE *f1,*f2;
int main(void){
if((f1==fopen("file1.txt".....
.....
}
if((f2==........
.....
}
for(i=0;i<3;i++){
file2he();
}
fclose(f1);
fclose(f2);
fopen(stdout,"終了しました。");
return 0;
}
ファイル2
#include <stdio.h>
extern FILE *f1,*2;
void file2he(void){
...............
}
ってやって、コンパイルすると、code in header プリコンパイルヘッダーが作成できない。と警告がでてきます。
ヘルプをみると、解決法みたいのが書かれているのですが、まったくわかりません。
まず、1.プリコンパイルヘッダーってなんですか?
2.code in headerって?
3.非インライン関数?
4.どうすれば、この警告は消えるのでしょうか(プログラム的に正しくした い?)
リンクすると、ほとんど同じプログラムなのに、動く奴と、動かない奴があります。わかる範囲でいいです。教えてください。よろしくお願いします。
No.3ベストアンサー
- 回答日時:
「プリコンパイルヘッダー」とは、コンパイルを高速化するために基本的に変更されないヘッダーファイルを予め途中までコンパイルした形にしたものです。
stdio.hなどシステムが提供するヘッダーファイルはプリコンパイルヘッダーとして指定しておくと少しコンパイルが早くなります。
今回の場合は、とりたててプリコンパイルヘッダーを指定する必要は無いと思いますので、コンパイラや統合ソフトの環境でプリコンパイルヘッダーを使用しない設定にした方がよいかもしれませんね。
No.2
- 回答日時:
こんにちは。
itohhといいます。>#include "ファイル2.c"
この意味は、ここに「ファイル2.c」展開しなさい。ということです。
分割コンパイルにはなっていません。
(この行は、削除してください。)
分割コンパイルとは、.cファイルを別々にコンパイルし、別々のobjファイルを作成することです。
そのあと、objファイルとlibファイルを結合して実行形式ファイル(exeファイルなど)
を作ることをリンクするといいます。(この処理までを含めて分割コンパイルということもあります。)
No.1
- 回答日時:
1~4の前に・・・。
>if((f1==fopen("file1.txt".....
f2の方もそうですが、「==」ではなく「=」にしないとファイルポインターが保存されませんよ。(^_^;
不思議に思うかもしれませんが、ここは代入でよいのです。
if文等の条件式は真か偽かを判定します。
つまり0(偽)かそれ以外(真)かです。
ここではファイルをオープンした結果としてファイルポインターが代入されます。
そして代入された値(f1等)が最終的にこの式の結果として判定されます。
オープンに失敗すればNULL(値としては0)が入りますので偽として判定され、成功した場合0以外の値が入りますので真となるのです。
また、ご質問にある様なファイル分割したプログラムはincludeで読み込むよりも分割コンパイル、リンクにより作成すべきです。
ご使用の環境が判りませんが、お使いのコンパイラーでも出来るはずですのでまずは調べてみて下さい。
>「==」ではなく「=」
あっ、間違っていました。
>割コンパイル、リンクにより作成すべきです
ちょっと、調べてみます。
ありがとう、ございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# #include <stdio.h>int main(void) { int buf[100] = 6 2022/11/01 22:45
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- C言語・C++・C# C言語 3 2022/10/04 15:07
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
” OS ビルド ” の意味が分か...
-
ILSpyで、デコンパイルできない。
-
戻り値について
-
「fatal error C1189」を回避す...
-
エクセルVBAではRound...
-
VBAを何回も作り直して、容量が...
-
C言語でmからnまでの合計を求め...
-
<math.h>があるのにsqrtが・...
-
C++コンパイル時に『 C1083: in...
-
bccでwinmm.libをリンクする方...
-
不要な #include
-
RPGでプログラムからソースファ...
-
セミコロンについて
-
VMwareのLinuxでコンパイルでき...
-
C言語でヘッダファイルにグロー...
-
windowsでLinuxで作成したソー...
-
コンパイルエラー:ユーザ定義...
-
C#のコマンドラインの分割コ...
-
漢字のコメントをはずすとコン...
-
他のLinuxでも動くa.outの作り方
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
ILSpyで、デコンパイルできない。
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
セミコロンについて
-
マクロ コンパイルがグレーバック
-
C++コンパイル時に『 C1083: in...
-
外部シンボル "_main"は未解決です
-
PRO*C コンパイルエラー
-
コンパイルエラー:ユーザ定義...
-
クリティカルエラー Expressio...
-
ビルドとリビルドの違いを教え...
-
RPGでプログラムからソースファ...
-
戻り値について
-
C++のhppファイルをCでinclude
おすすめ情報