質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

Q&A

解決済

2回答

306閲覧

C言語 ヘッダーファイルの記述方法がいまいち分からないです。

teityura

総合スコア84

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

include

あるファイルで定義された関数や処理を、別のファイル上でも使用できるようにするプロセスをincludeと呼びます。

0グッド

0クリップ

投稿2019/06/02 16:09

main.c で People, data, pdata を使うには、
どこを修正すればよいのでしょうか。
extern typedef struct { としてもダメでした。

typedef struct {

shell

1gcc People.c main.c 2main.c: In function ‘main’: 3main.c:4: error: ‘People’ undeclared (first use in this function) 4main.c:4: error: (Each undeclared identifier is reported only once 5main.c:4: error: for each function it appears in.) 6main.c:4: error: expected ‘;’ before ‘data’ 7main.c:5: error: ‘pdata’ undeclared (first use in this function) 8main.c:7: error: ‘data’ undeclared (first use in this function)

C

1/* main.c */ 2 3int main() { 4 People data; 5 People *pdata; 6 7 pdata = &data; 8 9 InputPeople(pdata); 10 ShowPeople(data); 11 12 return 0; 13}

C

1/* People.h */ 2 3#ifndef __PEOPLE_H__ 4#define __PEOPLE_H__ 5 6#include <stdio.h> 7#include <string.h> 8 9typedef struct { 10 char name[256]; 11 int age; 12 int sex; 13} People; 14 15/* 個人データを入力する */ 16extern void InputPeople(People *pdata); 17 18/* 個人データを出力する */ 19extern void ShowPeople(People data); 20 21#endif

C

1/* People.c */ 2 3#include "People.h" 4 5void InputPeople(People *pdata) { 6 printf("名前: "); 7 scanf("%s", pdata->name); 8 printf("年齢: "); 9 scanf("%s", &pdata->age); 10 printf("性別(1-男性, 2-女性: "); 11 scanf("%s", &pdata->sex); 12 printf("\n"); 13} 14 15void ShowPeople(People data) { 16 char sex[16]; 17 18 printf("名前:%s\n", data.name); 19 printf("年齢:%d\n", data.age); 20 21 if (data.sex == 1) { 22 strcpy(sex, "男性"); 23 } else { 24 strcpy(sex, "女性"); 25 } 26 27 printf("性別:%s\n", sex); 28 printf("\n"); 29}

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

main.c で People.h をインクルードしては如何でしょうか.

投稿2019/06/02 16:32

jimbe

総合スコア12545

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teityura

2019/06/05 17:07

main.c で People.h をインクルードしたら動きました! ありがとうございました。
guest

0

ベストアンサー

コンパイラさんがmain.cをコンパイルしようとするとき、peopleというキーワードを解釈しようとしたときに、どこにもその定義がない場合、定義に矛盾があった場合などにエラーとなります
main.cに直接その定義を書いてもいいですが、こういう場合、その定義をまとめてヘッダファイルに書いておいてインクルードするってことを行います

投稿2019/06/02 23:27

y_waiwai

総合スコア87719

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

teityura

2019/06/05 17:06

‘People’ undeclared でPeople宣言していないので、エラーになってましたが、 main.c で People.h をインクルードして、 Peopleというキーワードを解釈できるようになり、 問題なく動作しました!ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問