[ pbrt読解 ] COREDLL???

pbrtのコードをぼーっと眺めていると、
COREDLLというものが頻繁に使われていることに気付く。


例えばこんな感じ↓

class COREDLL Light { ….

これがどういう意味か全然わかんなくて、すごく気になってしまって、
調べてみました。

困ったときのgrepです。

結論から言えば、COREDLLというのはマクロです。
pbrt.hに思いっきりこう定義してありました↓

#ifdef CORE_SOURCE
#define COREDLL __declspec(dllexport)
#else
#define COREDLL __declspec(dllimport)
#endif

マクロというのは、コンパイル時にプリプロセッサがその値に置き換えてくれるもの、
だったと思います。違ったっけ?

うーん、なるほど。
あとは__declspec(dllexport)の意味を調べればよいだけです。
詳しく調べてないけど、どうやら値をexportするための何かだそうです。
dllがついてるからdllも関係あるんでしょう。
まぁこれはとりあえず置いとく。

で、COREDLLがマクロだという事に気付いて、ハッとしました。

そういえばC/C++には暗黙の了解があったのでした。

全部大文字のコマンドはマクロだと思え。

あちゃー、すっかり忘れてました。

Cはマクロだポインタだconstだstaticだクラスだ、なんてよく分からない機能が盛りだくさんで、
非常に覚えるのが面倒ですが、うおーー楽しそう!とドキドキしてしまう僕なのでした。

覚えることが多いのって楽しいよねぇ。

コメントを残す

メールアドレスが公開されることはありません。