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

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

ただいまの
回答率

87.49%

C言語でプロトタイプ宣言をしない書き方の名称

解決済

回答 4

投稿

  • 評価
  • クリップ 2
  • VIEW 2,425

score 16706

下記のように、関数のプロトタイプ宣言をせずに、呼び出し箇所より前に関数を定義しておく書き方って名称(○○法みたいな)があったような気があるのですが思い出せません。
調べても見つからないし勘違いでしょうか。
知っている方教えてください。

void func(void)
{
    // 処理
}

int main(void)
{
    func();
}
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 4

+1

こんにちは。

調べても見つからないし勘違いでしょうか。

勘違いっぽく感じます。(私が知らないだけの可能性ももちろんありますし、無いことの証明は悪魔の証明なのでちょっとヒヤヒヤしつつ回答してます。)

構造化プログラミング言語の走りはPASCALと思うのですが、PASCALではMain関数が最後というのが一般的な書き方でした。(アセンブラから入ったので結構衝撃的でした。少なくとも当時のアセンブラは通常2パスでしたので定義順序は気にしません。というか定義順序を気にしないようにするために2パスでした。)

そして、C言語も先に定義してから使うのが基本ですので、元々はその記法がオーソドックスな記法ではないかと思います。
なので名前がなくても不思議ではないように感じます。
そして、特別な記法だから「プロトタイプ宣言」という特別な名前が付いていると想像しています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/02 17:18

    知識豊富なChironianさんが知らないということは、やはり勘違いの可能性が高くなってきました。
    しかし何かで見たような気もするので、もう少し回答を待ちつつ自分でも調べてみたいと思います。
    もしかしたら学校のテキストに書いてあったのかもしれませんが、何せウン十年前のことですし…。

    キャンセル

+1

検索しても同じような記述は全く出てこなかったので、本の著者が独自に名前をつけて呼んでるだけかもしれませんが、

技術評論社のはじめてのC言語 完全入門 塚越一雄 著
第17章 関数 第3節 プロトタイプ宣言

には以下のような感じで説明されていました。

関数mainは,一番最後に置かれる.続いて関数mainの中で使われている関数をその前に並べ,さらに,それらの関数の中で使われている関数をその前に並べる.関数を並べる順序は,定義してから使うという順序である.これをPascal方式の関数配置という.

ちなみにその本では、プロトタイプ宣言を先に書く方式をC方式の関数配置として区別しています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/02 18:02

    Pascal方式というのはありですね。
    ただPascalを知らない人(私も知りませんが)が聞いたらなんのことやらですね。

    キャンセル

  • 2017/11/02 18:22

    デファクトスタンダードなObject Pascalだとforwardで前方宣言出来るようになってるので、古いPascalを知らないとなんのこっちゃ?って感じかもしれませんね。
    あと、キャメル記法をパスカル記法とか言ったりもしてややこしかったりもするかも?

    キャンセル

  • 2017/11/02 18:31

    あぁ、もう!ついていけませんw

    キャンセル

+1

もう解決済みになってますけど、初期はK&Rのスタイルでしたよね。

int foo(a, b)
int a;
int b;
{
}

これがANSI-Cでプロトタイプ宣言ができるようになってスタイルが変わったと下記に有りました。

ANSI-Cの違い

この時代は、プロトタイプ宣言はなかったと思います。なので、あえて言うならK&Rスタイルかも?(違ってると思いますが)

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/02 18:29

    ほうほう、なるほど。
    「K&Rスタイル」は明確な理由もあって良いですね。
    それにしてもこの書き方懐かしいです。
    久しぶりに見ました。

    キャンセル

check解決した方法

0

回答いただいた方々、調べていただいてありがとうございます。
自分なりに調べて単純な言葉にたどり着きました。

ボトムアップ

でした。

検索するとボトムアッププログラミングボトムアップ方式のような感じで使われていました。
特にC言語に限定した手法名ではありませんでしたが、恐らくこれです。
単純な言葉も思い出せないとはボケてますね。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2017/11/02 17:54 編集

    ボトムアップってトップダウンに対応する言葉ですよね。プログラム全体の構築の仕方をボトムアップとかトップダウンというのであって、プロトタイプ宣言をしない書き方とはちょっと違うような・・・。ボトムアップで構築しても書き方としてはプロトタイプ宣言をしないと動かない書き方も出くるわけで。
    私は特に名前がなかった様な気がするんですが・・・。

    キャンセル

  • 2017/11/02 17:58

    あ、いや、何か正式な名称があったような気がして質問したのですが、結果としてありふれた名前でしたという自己解決です。
    恐らく学校のテキストか何かに「このような記述方法をボトムアップ方式と呼びます」みたいな記載になってたんだと思います。
    それが正式名称かどうかは初学者時代の自分にはわかるはずもなく…。

    キャンセル

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

  • ただいまの回答率 87.49%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る