パスワードを忘れた? アカウント作成
60249 journal

crowzの日記: C言語で基本的な事を学ぶ2日目 1

日記 by crowz

だいぶ間が空いてしまったが、C言語でカレンダーを実装する作業はすすんでいる。
# とはいえ、作業と呼べるには程遠いが

とりあえず、カレンダーと言えばカギは「日付」と「ループ」と「文字列のフォーマット」だと勝手に思ってる。
それを言語的に順番に考えて見ようと思ったが、C言語の作法的なものとコンパイルの仕方が先だな。

まず、C言語では関数が絶対であるという事。
そしてmainという関数が必ず必要でこれが一番最初に始まるようだ。
(当然ながら)スクリプト言語の用にファイルの先頭から始まるわけでは無く、この関数をまず実行するというのが作法のようだ。
なので絶対にプログラムにはmain関数が存在する。

void main(){
}

関数名の頭のvoidは返り値が無いという意味らしい。
関数の見た目は他の言語と一緒なので特に問題は無い。(他の言語がCを真似しているのだろうけども)

次に文字列の出力。これは

printf("%s", "Hello World\n");

これもどこかで見た事のある関数なので全然問題ない。
これを踏まえたうえでHelloWorldは

void main(){
    printf("%s", "Hello World\n");
}

こんな感じだろう。

次にgccでのコンパイル。
cygwinで作業をしているが、特にGNU/Linux上でも差は無いと思う。
コンパイルの作業は今のところこんな感じ

gcc -o .exe .c

Windows なので exeをつけているが、別につけなくても問題は無かろう。
たぶん-o = outputのファイル名指定 ということだろう
ソースファイル名も.cという拡張子になっているがCのソースであれば別になんでもいいんだろうな。

これでHello worldは完成。

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by okky (2487) on 2009年02月13日 21時19分 (#1513019) ホームページ 日記

    void main()

    えー、参考にしている資料が間違っています。この関数は

    int main( int argc, char *argv[] )

    が正しい。

    main() という関数は、実際には「スタートアップコード」から呼び出される関数です。スタートアップコードがこの関数を呼ぶときに、引数を2つ引渡し、戻り値として整数を要求しています。Cでmain() から別の関数を呼び出すのと同じ構造が、すでに最初から存在している、と言うわけです。

    プログラムを実行して終了すると…特に unix の場合、bash などでプログラムを実行すると、実行した後に
    $?
    というシェル変数に値が入ります。実は main() の戻り値がこの $? になります。ただし 0-255 までの値に限定されますが。

    http://www.kouno.jp/home/c_faq/ [kouno.jp]

    http://www.kouno.jp/home/c_faq/c11.html#0 [kouno.jp]
    のQ11.12 を参照してください。

    --
    fjの教祖様
typodupeerror

弘法筆を選ばず、アレゲはキーボードを選ぶ -- アレゲ研究家

読み込み中...