• 締切済み

C言語について。

C言語プログラマとしては、スタートアップコードは・・・ ・自分が書いたプログラムを、直接動かすために必要なライブラリ ・それはコンパイル後、リンカによって追加されるライブラリこれは、 どういう意味でしょうか?分かりやすく教えていただけると幸いです。すみません。で、 以下のかぶくんまんさんの回答です。 https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q11247611941 で、 C言語におけるプログラミングとは「main関数を書くこと」に他ならない。なぜ「main関数を書く」ことがC言語におけるプログラミングに他ならないのかと言えば、それは偏に「C言語のコンパイラはmain関数を呼び出すプログラムを生成するから」です。それがmain関数を求めるので結果的にmain関数がリンクされ、そしてmain関数が求めるままに他の関数もリンクされていくわけです。 で、その「main関数を呼び出すプログラム」こそが、C言語における「スタートアップコード」。 という回答で、main関数以降は、プログラマが書くのですよね?プログラマが関数をリンクさせる様なプログラムを書くということでしょうか?教えていただけると幸いです。すみません。 という所が分かりません。教えていただけると幸いです。すみません。以下のURL https://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q12247932542

みんなの回答

  • tkwn52
  • ベストアンサー率43% (66/151)
回答No.6

No.4を回答したものです。 > main関数以降は、プログラマが書くのですよね? そのとおりです。 main関数の中で自分がプログラムでやりたい処理を記述していきます。 C言語のプログラマは、よほどの理由がない限り、 main関数が起動される仕組みは知らず、 main関数の中にどう処理を記載するかで知恵をしぼることになります。 C言語で用意されている関数を呼び出すように記述することもあれば、 自分で関数を書いておいて、それをmain関すから呼び出すように記述することもあるでしょう。 > プログラマが関数をリンクさせる リンクとは、プログラム同士を結合すると言う意味で使います。 プログラムを書く際に「リンク」という表現はあまり使わないと思います。 プログラマが関数を使うように記載する行為は「呼び出す」等の表現になると思います。 なお、ご質問いただいている内容は、 C言語の使い方ではなく、C言語の動作する仕組みを聞いているように思います。 これは、車の運転免許を取りたい人が、 一生懸命、車のエンジンの細かい仕組みを聞いているような感じです。 どうしてもC言語の動作する仕組みを知らないといけない事情でもあるのでしょうか。 もしそうであったとしても、まずは書籍などを見ながら実際にプログラムを作ってみて、 C言語の基本的な使い方を身につける方が先ではないでしょうか。 そうすれば、「C言語の動作する仕組み」を誰が説明しもらった場合、理解することができると思います。 「C言語におけるプログラミングとは~、C言語における「スタートアップコード」。 の回答ですが、C言語を少し経験したことのある人なら、十分理解できる回答だと私は思います。 ITは言葉だけですべて説明できる世界ではありません。 会話にあたっては双方に適切な知識レベルというものが求められる場合があります。 すべてを言葉だけで経験者に説明させようとすると印象が悪くなる場合もあるのではないでしょうか?

zasx1097
質問者

補足

それがmain関数を求めるので結果的にmain関数がリンクされ、そしてmain関数が求めるままに他の関数もリンクされていくわけです。これは、どういう意味でしょうか?教えていただけると幸いです。すみません。

すると、全ての回答が全文表示されます。
回答No.5

1. 他の関数を一切呼び出さない関数を書く 2. 自分の書いた関数または(ライブラリ等)既に用意された関数を書く のいずれかです。 で、プログラム(つまり関数の集合)を実行すると、 その中でmainと名の付いた関数が最初に呼び出されます。 それだけのこと。

zasx1097
質問者

補足

プログラムがどこから始まるように実行ファイルを作るのかは、実行ファイルを最終的にまとめるリンカが設定します。 それを、C言語用に main 関数を呼び出すスタートアップから始まる様に、コンパイラドライバが、リンカに指定します。 スタートアップが、main 関数を呼び出す様にしているので、リンカは main 関数を探してリンクします。 また、main 関数が使う様にしている関数や変数も、リンカが探してリンクし、以下同様に、必要な物を探して実行ファイルにします。 教えていただけると幸いです。すみません。

すると、全ての回答が全文表示されます。
  • tkwn52
  • ベストアンサー率43% (66/151)
回答No.4

C言語のプログラマーであったこともあるエンジニアです。 スタートアップコードについては以下に解説があります。 https://atmarkit.itmedia.co.jp/ait/articles/1703/01/news173_3.html しかし、通常のC言語プログラミングにおいて、 スタートアップコードの知識が必要になることはほとんどありません。 OSやハードに関わるような非常に高度なプログラミングをするときだけではないでしょうか。 質問の内容からC言語の初心者と見受けられます。 まずは、通常のC言語プログラミングをよく経験して、 C言語についてなれてから難しいところに入って言った方が、 理解しやすいと思います。 C言語の知識があまり無い状態で上級者に難しいことの説明を求めても、理解できる回答は返ってこないような気がします。

zasx1097
質問者

補足

C言語におけるプログラミングとは「main関数を書くこと」に他ならない。なぜ「main関数を書く」ことがC言語におけるプログラミングに他ならないのかと言えば、それは偏に「C言語のコンパイラはmain関数を呼び出すプログラムを生成するから」です。それがmain関数を求めるので結果的にmain関数がリンクされ、そしてmain関数が求めるままに他の関数もリンクされていくわけです。 で、その「main関数を呼び出すプログラム」こそが、C言語における「スタートアップコード」。 という回答で、main関数以降は、プログラマが書くのですよね?プログラマが関数をリンクさせる様なプログラムを書くということでしょうか?教えていただけると幸いです。すみません。教えていただけると幸いです。すみません。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.3

>スタートアップコードというのは結局何なのでしょうか? すべての実行ファイルに含まれ、main関数(あるいはそれに類する関数)を蹴っ飛ばして 「頭から実行せんかい!」という指示をするためのプログラムです。 プログラマーは、一般にそれの存在を意識する必要は全くありません。 勝手にやってくれますから。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.2

スタートアップローダーっていうのは、 ビルド時に実行ファイル中に組み込まれます。 で、実行ファイル(Windowsベースだったら~.exeっていうファイル)を ダブルクリックしたりして「実行せよ!」って指示を出すと まずはスタートアップローダーが内部で勝手に起動して、 main関数を呼び出し、実行が始まります。

すると、全ての回答が全文表示されます。
  • asuncion
  • ベストアンサー率33% (2127/6289)
回答No.1

Windowsベースのプログラムでなければ、 C言語のコードには必ずmain関数がなければなりません。 (Windowsベースならば、main関数に相当するのはWinMain) で、通常、プログラムを実行するために必要なライブラリー (必ず使うのはprintf()とかscanf()とかが入っている標準ライブラリー)は、 プログラマーが意識しなくてもビルド(コンパイル~リンクに至る一連の処理)時に 自動的にリンクしてくれて、実行ファイルの中に 組み込まれます。 特殊なライブラリー(ゲーム用のとか)を使うときは、 コンパイル時にどのライブラリーを使うかを指定する必要があります。

zasx1097
質問者

補足

スタートアップコードというのは結局何なのでしょうか?教えていただけると幸いです。すみません。

すると、全ての回答が全文表示されます。
このQ&Aのポイント
  • 三菱GOT表示機F930GOT-BWDを知り合いから頂いたので、編集ソフトを教えてください。
  • 活用したい三菱GOT表示機F930GOT-BWDの編集ソフトを教えてください。
  • 編集ソフトの名前がわからないので、教えていただけませんか?
回答を見る

専門家に質問してみよう