
下記の(1)、(2)のファイルについての質問になります。
(1)cファイル
#include <stdio.h>
/******************/
/* 表示モード処理 */
/******************/
void view_mode( FILE *fp_in )
^^^^
{
chardata;
while( 1 ){
/* ファイルから1文字読込み */
data = fgetc( fp_in );
/* ファイルの終了かをチェック */
if(data == EOF ){
break;
}
/* 表示処理 */
printf( "%c", data );
}
return;
}
(2)ヘッダファイル
void view_mode( FILE *fp_in );
^^^^
◆質問内容
(1)にview_modeの処理を書き、(2)にview_modeのプロトタイプ宣言をしていますが、
(1)はコンパイルが通るのですが、(2)はコンパイルが通りません。
エラー内容を見ると、
エラー E2147 testddga.c 1: 引数宣言は 'FILE' で始められない
と表示されてしまいます。
(1)では、引数宣言にFILEを使用しているのにコンパイルが通り、
(2)では、何故かはコンパイルが通らないので、疑問に思っております。
お手数ですが、ご教授の程お願いたします
No.2ベストアンサー
- 回答日時:
(2)で識別子「FILE」を使用する前に
#include <stdio.h>
をしていないから。
識別子「FILE」はstdio.hの中で定義されています。なのでstdio.hをインクルードしてからじゃないと識別子「FILE」を使用出来ません。
stdio.hをインクルードする前に識別子「FILE」を使用してしまうと「FILE」は「単なる変数名」になってしまいます。
「エラー E2147 testddga.c 1: 引数宣言は 'FILE' で始められない」
の意味は
「引数宣言は'int i'や'char c'などのintやcharのように型名で始めなければならず、iやcやFILEなどの単なる変数名では始められない」
と言う意味です。
要は、stdio.hをインクルードして
typedef struct {
(略)
} FILE; /* This is the FILE object */
って宣言をしてからじゃないと「FILE」って書けないのです。
No.3
- 回答日時:
FILEという型はstdio.hで宣言されています。
(1)はstdio.hをincludeしているのでエラーが出ませんが、(2)はしていないのでFILEが不明な識別子であるとしてエラーを出します。
(2)はヘッダーファイルだということなので、どこかの.cファイルからincludeしていると思います。includeしている.cファイル全てで(2)より先にstdio.hをincludeすればエラーは出なくなります。
あるいは(2)でstdio.hをincludeしてもエラーは出なくなります。
stdio.hをインクルードしたら、コンパイルが通るようになりました。
インクルードのし忘れが原因でしたね。
大変、失礼しました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(プログラミング・Web制作) pythonのこのエラーがわかりません 3 2022/11/16 14:54
- その他(プログラミング・Web制作) Pythonを勉強しています。 5 2023/08/25 09:51
- その他(プログラミング・Web制作) python flask から fastapiへの移行時のエラー対処 1 2023/02/05 12:26
- Visual Basic(VBA) vbaの構文の修正相談(xmlファイルを順に開いてコピペ作業) 1 2023/04/22 01:18
- 画像編集・動画編集・音楽編集 DVD Styler トラブル解決方法 6 2022/10/29 16:00
- C言語・C++・C# メインプログラムに#include <algorithm>を書いて、 そのメインプログラムが // 3 2023/05/02 11:24
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- Visual Basic(VBA) このVBAでExcelアプリケーションを作成は必要ですか? 3 2023/07/19 21:13
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
VC++でboolがエラーになる
-
fortranでプログラムを実行する...
-
ビルド失敗 指定されたファイ...
-
c言語をgcc.exeにコンパイルし...
-
Return に対応する GoSub があ...
-
visual C++ でビルドの中止がで...
-
セマンティックスの概念とは?
-
C言語プログラムエラーについて
-
左側がクラス、構造体、共用体...
-
適切な変換関数が存在しない???
-
Dim x As Integer = 0
-
バッチからsqlplusの接続エラー...
-
Cabの解凍プログラム
-
プログラミングで挫折するポイ...
-
VC++ includeファイルについて
-
ヘッダファイルでのFILE型引数...
-
ウィンドウのハンドルからファ...
-
VC++ 2010 Expressのエラー
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
python エラー
-
エクセルのエラーメッセージ「4...
-
Excelのエラーで困ってます。
-
ビルド失敗 指定されたファイ...
-
fortranでプログラムを実行する...
-
visual C++ でビルドの中止がで...
-
適切な変換関数が存在しない???
-
VB2008で定数に色の設定をした...
-
HEWを使用しているのですが、こ...
-
コンパイルできません。
-
バッチからsqlplusの接続エラー...
-
Visual Studioのstrcpy_sについて
-
DLL関数を使ったプログラム
-
キーの自動入力
-
RightとLeft関数のライブ...
-
BC30002: 型 'ListItem' が定義...
-
LPCWSTRとchar
-
error C3867 関数呼び出しには...
-
デバッグ中のエラーのことで教...
-
sys/time.hのインクルードがで...
おすすめ情報