ozkl/sosoという小さなオペレーティング・システムの実装を読んでいたのだが、そこで出てくるmain.cのエントリポイントがmain関数ではなくkmain関数であることに気がついた。昔々にCを書いていたときは問答無用でmain関数とした記憶があるので、一体コレはなんぞやということでググってみると、いい感じのstackoverflowが出てきた。
You could probably run the tutorial renaming kmain to main, but note that it’s still void main(void*, unsigned int), not int main(int, char**); in fact that sort of confusion is likely part of the reason the writers chose to use a different name. But is is just a convention they’ve selected, not anything standardized.
要は、アセンブリから呼び出されるようなmain関数相当のものは命名自由だが、これはmainはmainでも実行形式バイナリで使われるint main(int, char**)
みたいな関数シグニチャとは異なるんだぞ、ということを明示する際にkmain
やらdmain
みたいな命名をする慣習らしい。
- 作者: 林高勲,川合秀実
- 出版社/メーカー: 技術評論社
- 発売日: 2019/09/26
- メディア: 単行本(ソフトカバー)
- この商品を含むブログを見る