Luaコードを読んでいて気になったマクロ
Luaのソースコードを読んでいてマクロの使い方についてメモ。
複数環境に向けシンボルを公開する
以下はluaconf.hで定義されている。 実装は同じだけど意味によって別名を与えてる。
LUA_API | core API function |
---|---|
LUALIB_API | 補助関数 |
LUAMOD_API | 標準モジュールの外部関数 |
これらを関数宣言の前に記述する事で役割を明記しつつVisualStudio対策も行っている。
__declspec(dllexport)
はDLL作る時に外部晒す関数で宣言するキーワードらしい。
luaconf.h#L244-L261
|
|
モジュール外へ公開する意図のない識別子の宣言
関数, 定数, 変数の定義をマクロで分けている。意図を明確にするというのは大事。 可視性などの指定を含んだマクロにしていてコンセプトによって対応を揃えているっぽい。
luaconf.h#L278-L286
|
|
キーワード__attribute__
はgcc
で引数・返値の形式をコンパイラに通知する事で可変引数を実現したり,
返り値が存在しなくてもコンパイラがwarnを出さない様にしたりする。
ARMコンパイラでは更にvisibility
によって可視性もコントロールできる。
random note
エキスパートC読もうって思った。 次はLuaVMのlua_State, global_Stateなど仮想マシンの操作について調べる。