図書館で勉強 / IMEツールバーの機能を呼び出すショートカットキー / データ構造 / 撮影会 / gccでC++のコンパイル / NULLを定義しているヘッダ

投稿日: 2005年05月08日 更新日: 2017年07月22日

図書館で勉強

先日書いたとおり、日曜日なので図書館でお勉強開始。

先週と同じ「岩波講座ソフトウェア科学3 アルゴリズムとデータ構造」をメインに、近くにあった、「コンピュータ英語活用辞典」をアームレスト代わりに積んでおく。

IMEツールバーの機能を呼び出すショートカットキー

Ctrl+F10

すぐ忘れるのでメモ。

http://homepage2.nifty.com/winfaq/c/ntperf.html#1376

データ構造

今日は基本的なデータ構造について勉強。

「岩波講座ソフトウェア科学3 アルゴリズムとデータ構造」で言うと「1.3 基本的データ構造」。

撮影会

昼食ついでにデジカメの撮影会。

公園を散歩しながらマクロモードを使って花などを撮影する。友人に貸りたIXY DIGITAL 600の性能の高さに驚く。

Canon IXY DIGITAL 600で撮影した写真(リサイズのみ)。黄色い花は普通のマクロ、白と紫の花はデジタルマクロを使って撮影。

CONTAX SL300RT*で撮影した写真(リサイズのみ)。どちらもマクロモードを使って撮影。

gccでC++のコンパイル

クラスにコンストラクタを実装して

gcc hoge.cpp

としたらエラーが出てコンパイルできない。

hoge.cpp: undefined reference to `vtable for Hoge'

Hogeはクラス名。

下記ページを参考に-lstdc++をつけるとコンパイルできた。

gcc hoge.cpp -lstdc++

標準ライブラリを使ってないのにstdc++が要るって言うのがよくわからないけどそういうことらしい。毎度指定するのは面倒(環境変数で解決出来る気も)だし出力ファイル名も変えたいから、Makefileを覚えて使おうかな。

NULLを定義しているヘッダ

何もインクルードしていないファイルをgccでコンパイルしたら

hoge.cpp:21: error: `NULL' undeclared (first use this function)

恥ずかしながら「NULLって処理系内部で定義されてるんじゃないの?」と思った。

そういえばどこかのヘッダーで

#define NULL 0

って定義してあった気がしなくもない。こういうときC言語をきちんと勉強してないことがばれる。K&Rを再読したほうがいいのかも。

で、どこで定義されてるのか考えてみた。stdio.hだけインクルードするコードでもNULLは使えた記憶があるので、stdio.hだろうか。と一瞬考えたがすぐに、多分stdio.hも他のヘッダーをインクルードしてるんだろうと思い直す。

調べてみたところstddef.hで定義されていることがわかった。大抵他のインクルードファイルから間接的にインクルードされるので、今まで気にしたことがなかった。

http://okuyama.mt.tama.hosei.ac.jp/unix/C/slide50-1.html

NULL とはヘッダファイル stddef.h で定義された定数(マクロ)で,それ自体 NULLポインタ定数です。但し,NULLポインタ定数 NULL を使うには,次のヘッダファイルのいずれかを読み込むことが必要です。

stddef.h,stdio.h,stdlib.h,string.h,time.h,wchar.h


この記事へのコメント

※ このコメントは旧ブログシステム(tDiary)からの移行です。

drryさんからのコメント(2005-05-09 02:13:26)

良いですねぇ。最近のデジカメが欲しくなります。

_さんからのコメント(2005-05-09 20:45:05)

gccでC++のコンパイルg++じゃなくて?

hajimeさんからのコメント(2005-05-10 10:31:23)

drry本当です。最近のデジカメ使うと自分って上手いじゃん!と調子に乗ってしまいます。>_あんまり深く考えずに、gccにc++のコード入力したらg++呼んでるんでねーの?GCCだし。とか思ってましたけど、調べてみたら違うみたいですね。

CEOさんからのコメント(2005-05-11 21:44:23)

カメラはいい!最近特にそう思います。奥が深いし・・・。

hajimeさんからのコメント(2005-05-14 00:01:24)

デジカメは昔のカメラと違って、いろんな設定を試してすぐにその場で結果を確認できるのがいいですね。

名前:宮内 はじめ

Code for Nagoya名誉代表

E2D3名古屋支部長

プログラマーです。GISやデータビズが好きです。このサイトは宮内の個人的なメモです。

プロフィール

お問い合わせ