2017/02/11

[c/c++]フリースタンディング環境

Cで書いていて、「これって、この環境で使える関数だっけ?」と考えないといけないことがときどきある。

たとえば、malloc()。
リンカで動的に使用するメモリを確保していなければ呼び出せても使えないし、malloc()自体を自分で定義しないといけないということもある。

そういう「標準じゃない」という環境を指す言葉があったのだけど、なんだっただろうか・・・。
オライリーの『Cクイックリファレンス』を読んでいて思いだした。
「フリースタンディング環境」だ。

 

本では、p.110などに説明がある。
詳細は本を読んでいただきたいが、「ホスト環境」は標準ライブラリがフルセットで使用でき、フリースタンディング環境は最小機能だけが使える、となっている。

最小機能ってなんだよ、ということになるのだが、p.276に使用できるヘッダが書かれている。
9つだ。
ただ、これも9つしか使えないわけではないし、この9つも必ずフル機能が使えるかといえば、そうでもないのだろう。
例えば、NordicのnRF51822みたいにOSが載っていない環境でgccを使っていたが、stdlib.hなんかを使った気がする。

 

一番わかりやすいのは、main()で始める必要がない、というところか。
混乱するし、他の名前を付ける理由もないからだいたいmain()にするとは思うが。

ただ、関数コールせずにジャンプで呼ばせることは多いかもしれん。
だって、main()を抜けて何か処理をさせたいわけでもないし、そもそも何か処理をしたいならmain()の最後に書いておいた方が自由度があるので、関数コールしてスタックを消費したくないのだ。

0 件のコメント:

コメントを投稿

コメントありがとうございます。
スパムかもしれない、と私が思ったら、
申し訳ないですが勝手に削除することもあります。

注: コメントを投稿できるのは、このブログのメンバーだけです。