Cスタンダードライブラリー使うな
■ このスレッドは過去ログ倉庫に格納されています
0001なんで?
NGNG0002デフォルトの名無しさん
NGNG0003デフォルトの名無しさん
NGNG0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGstdio.h が使えないって本当っすか?
0006デフォルトの名無しさん
NGNG0007デフォルトの名無しさん
NGNGあなたの使ってる言語はC++だから。
0008デフォルトの名無しさん
NGNG0009デフォルトの名無しさん
NGNGだけど、じゃあ何を使えばいいの?
0010デフォルトの名無しさん
NGNGSTL
0011デフォルトの名無しさん
NGNG普通の組み込みコンパイラには、
標準関数のリエントラント・スレッドセーフ対応一覧表がついてきます。
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNG0014デフォルトの名無しさん
NGNGリエントラント・スレッドセーフと
ROM化は
関係無いような
0015デフォルトの名無しさん
NGNGSTLにはこれらの替わりになるものがあるの?
assert.h
ctype.h
errno.h
float.h
iso646.h
limits.h
locale.h
math.h
setjmp.h
signal.h
stdarg.h
stddef.h
stdio.h
stdlib.h
string.h
time.h
wchar.h
wctype.h
0016デフォルトの名無しさん
NGNGそうだね。
リエントラント・スレーブセーフって、要は関数が多重に呼べる仕組みだろ?
だいいち、組み込み機に標準出力デバイスがあるとおもう?
0018デフォルトの名無しさん
NGNG全部なんとかなるんじゃないか?
0019てんさいぷろぐらむぁ(偽)
NGNGWindowsCEについて(かなりてきとーなので間違いあるかも)
Cランタイム(C標準関数)
: 削減(一部はあり、代用関数使用の事)
STL
: 標準でわなし(地力で入れなされ)
例外(try catch throw)
: 使用不可(多分)
・・・・・・をい!!
0020デフォルトの名無しさん
NGNGそれじゃ売れないはずだ(笑
つーか例外無いってどういう事?
0021デフォルトの名無しさん
NGNGSTLはCから継承したライブラリと一緒に使うものであって、置き換えるものではないよ。
それでもSTLで置き換えられると言い張るなら、exit関数の代わりをSTLでやってみてよ。
>>14
組み込み用途では、マルチタスクを使用する頻度が極端に高いので、リエントラント性に
注意を必要に迫られることが多い。マルチタスクでなくても、割り込み処理を書くだけで
リエントラント性は考慮しないといけない。
そもそも組み込みのようなフリースタンディング環境では、標準ライブラリはstddef.h,
stdarg.h, limits.h, およびfloat.hしかサポートされない。(Amendment1ではiso646.h
もだけど、Amendment1をサポートする処理系自体あまりない)
それ以外はすべて処理系の独自拡張なので、百パーセント信用しても期待してもいけない。
0022デフォルトの名無しさん
NGNGstdio.hとか使うなって事でしょ。
exit()とかは可。
0023デフォルトの名無しさん
NGNGないと思われ。
0025デフォルトの名無しさん
NGNG0026デフォルトの名無しさん
NGNG無理してiostream使ってパフォーマンスを落としてまで
標準ライブラリを使わないことに何か利点があるの?
0027デフォルトの名無しさん
NGNGC++でCのようなプログラム書くな!
ってやつの延長じゃない?
よくそういう奴いるし。
0028てんさいぷろぐらむぁ(偽)
NGNGつーか例外無いってどういう事?
いやぁ本格的にやってるわけじゃないんで(スイマセン)
Microsoft eMbedded Visual C++ 3.0でちょっと遊んだ感じでは
try catch throwを書いただけでエラーになるんですよ。
ちなみにeMbedded Visual C++ 3.0の環境は
基本的にVCと全く同じ構成なんですが・・・
VCの「C++例外を有効にする」設定チェックボックスと同じ場所には
設定チェックボックスがなぜか存在しないんです(?)
/GXオプションをつけても不信なエラーが出るし・・・
(つーかまぢで使え無いのだろうか・・・・?)
CEはを積む環境は色んな環境やら厳しい環境やらがあると思うので
事情があるのかもしれませんです。
この辺はどなたか詳しいじじょーをご存知の方教えてくださいな。
ってスレの趣旨とちがうですねぇ・・・ゴメンナサイ
0029デフォルトの名無しさん
NGNGiostream.hっていつの時代のヘッダ使ってるの?それともEC++?
003129
NGNG0032デフォルトの名無しさん
NGNGstd::cout
0033デフォルトの名無しさん
NGNGそれは組み込みに限定した話でもないじゃん。
Windowsのプログラミングにだってこれらは大事。
だから、組み込みの特殊性の例としてあげるには不適切のような。
0035デフォルトの名無しさん
NGNGhttp://www.caravan.net/ec2plus_j/language_spec.html
0036デフォルトの名無しさん
NGNG使うな」という規定を見たことがある。sin関数なんかは自分で
作りなさい、という趣旨のようだ。
0037デフォルトの名無しさん
NGNG0038デフォルトの名無しさん
NGNG0039デフォルトの名無しさん
NGNGsin関数を自作しろって?
そんなこと考えたこともなかった。
私は作れません。(ワラ
0040てんさいぷろぐらむぁ(偽)
NGNGえーと
とりあえずnamespace、テンプレート、多重継承(ATLあたりで使ってた)
とかは普通に使ってたような気がするので
eMbedded Visual C++ 3.0はEmbedded C++とは直接関係ないみたいですね。
(eMbedded Visual C++ 3.0で遊んだの結構前なんで詳しくは忘却の彼方)
でもEmbedded C++で削られてるって事は
組み込み系では例外使えなくても不思議ではないって事ですね。
情報さんくすです。
これで安心して寝れます。
でわ
ニャフ-ン オヤスミ-
___Λ Λ____
|__(,,⌒ー⌒)/)゙__|
0041てんさいぷろぐらむぁ(偽)
NGNG今まで組み込み系でC++ってナシだったので
(そんなに深く組み込みの仕事はやった事無いんですが)
Embedded C++っての知りませんでした。
また一つかしこくくなりましたとさ。
でわおやすみなさい(微妙にスレと関係ない話ですいませんでした)
0042デフォルトの名無しさん
NGNGdouble sin(double a)
{
return cos(a + (PI/2));
}
0043デフォルトの名無しさん
NGNG収拾をつけてほしいぞ。
0044デフォルトの名無しさん
NGNGそれは冗談にしても、実際sin,cos,tanは自作させられたことあるよ
(ライブラリ使用禁止のため)
誤差が出まくるのは承知の上。誤差を最小にするために
計算順序を工夫したりしていろいろ苦労したなぁ・・・
0045デフォルトの名無しさん
NGNG自分で書くなよ、どっかからソース持ってこいよ…
004621
NGNGWindowsとかのホスト環境の処理系の場合は、どんなプラットフォームで動作するかが
予め分かっているので、排他制御をライブラリに組み込んでしまってスレッドセーフに
できる。
ところが組み込み処理系の場合、どんなプラットフォームで動作させるかはユーザが決
めるので、排他制御の機構もユーザ任せになる。つまり、呼び出し側が自分の責任で矛
盾がないように制御しないといけないから、リエントラント性に関する情報が不可欠に
なるというわけ。
0047デフォルトの名無しさん
NGNGイッテヨシデスカ?
0048デフォルトの名無しさん
NGNG逝くなら高校に
0049デフォルトの名無しさん
NGNGなぜ、ライブラリ使用禁止なのかが、やはりどうしてもわからない。
>>1といい、なぜそんな状況になるの?
ないから使用できないのではなくて、あるのに使用禁止とは。
そうか!そうやって仕事を捏造して、請求額を上げるのが目的かも。
契約内容次第ではそれも可能だもんね。
0050デフォルトの名無しさん
NGNGリンクして配布するには別契約になってるって処理系みたことあるよ。
そういう環境ではライブラリを自作しないわけにはいかない。
0051デフォルトの名無しさん
NGNG数Iからやり直せ。
0052デフォルトの名無しさん
NGNG>なぜ、ライブラリ使用禁止なのかが、やはりどうしてもわからない。
・パフォーマンスが悪すぎる。
・とにかくプロジェクトでそう言う方針になった。
・SEがライブラリの使い方を知らない
・そもそもライブラリが無い(藁
人生長く生きると色々なことがあるものだよ(藁
0053デフォルトの名無しさん
NGNG追加
・ライブラリがバグってる。
005449
NGNG自作してもライブラリよりパフォーマンスを上げるのはそんなに簡単じゃない
でしょ。sin関数とかは表引きにでもするのかな。中間値はテイラー展開で求
めれば、マクローリン展開より収束が早いし、精度も期待できるもんね。
ないのは仕方ないとして、2番目と3番目の理由は理解不能。
>>53
ライブラリ関数全部がバグってるの?自作してもバグる可能性が十分あるから、
特定の関数を使用禁止にするんじゃなくて、ライブラリを使用禁止にするのは
おかしいなあ。
0055デフォルトの名無しさん
NGNG上司がロクでもない情報に踊らされているとわかってても、
その通りに作業しなきゃいけないのが下っ端というものです。
0056デフォルトの名無しさん
NGNGライブラリの関数で使いたいものって何がある?
組み込みではほとんど意味のない関数なんだよ。
俺はどうしてもsprintfが使いたかったんだけど、リンクすると
30Kも増えるから泣く泣くあきらめて自作したよ。
#128KのROMだった。
あとsin関数なんて普通使わないと思う。組み込みはZ80とか68とか
が現役だからコプロがなくちゃ数学関数は洋ナシ。
005736
NGNG関数を自作させよう、ということでしょ。
ちなみに、そのコンテストの課題は、「オイラーのγ定数を
できるだけ長い桁数、かつ高速に計算するプログラムをCで作れ」
というものだった。コンテストの募集要項に、代表的な
γの公式がいくつか掲載されていて、「これを参考にしろ」
とあった。(別にその公式を使えというわけではなかったようだが)
0058デフォルトの名無しさん
NGNGそんな化石ひっぱりだされても困りますわ。
0059デフォルトの名無しさん
NGNG開発しているモノが DS!=SSとかだったから、
それを前提にされていた標準のライブラリは使用禁止だった。
ちなみに、OS/2 V1.1ぐらいの話しです。
0060sage
NGNG整数演算しか使えなかったから…
今の時代なら、作る必要ないと思われ。
0061デフォルトの名無しさん
NGNGstdio.h相当の関数を使わないことにしてる/したい
と言ってませんでしたか?
006221
NGNGだから組み込み処理系の標準ライブラリには関数はひとつもないんだってば。
独自拡張の関数は、ある意味でサービスみたいなもんだから、文句を言っても始まらない。
それにsprintfとかはもっとも大きな関数じゃないか。
それから、128Kとか30Kとかいうのはビットだろ。ちゃんと書かないとみんなきっと誤解
してるよ。
>>58
無知丸出し。
0063デフォルトの名無しさん
NGNGいわゆる標準ライブラリの関数で使いたいものあるか?
と言う話だったんだけど。
俺が使ってたのやつはほとんどの関数があったけど、結局何も使わなかった
#組み込み理系の標準ライブラリなんて規格があるなんて知らなかったよ
ビットじゃないよバイトだよ。sprintfがかくも巨大なのは浮動小数点
処理をするためにそれ系の関数を片っ端からリンクするからだ。
単に実装がへたれだっただけかもしれないけど。
006462
NGNGどうでもいいけど、いわゆる標準ライブラリは、stddef.h, stdarg.h,
limits.h, float.hだけだよ。
これらは使いたいかどうかではなくて、移植性と可読性のためにあると
考えた方がいい。
それから、128KバイトもROMがあるなら贅沢いったらだめ。
128KビットROM+256ビットRAMの環境でCでプログラムしたことあるけど、
あれは本当に参った。関数を呼び出すのに引数をスタックに積むだけで
ひやひやものだったもんな。
0065デフォルトの名無しさん
NGNG100Kくらいはデータでプログラムには使えないんだよー
>128KビットROM+256ビットRAMの環境でCでプログラムしたことあるけど、
まじで?256ビットRAMでC?
256ビットっていったら68のレジスタ以下だよ?
006664
NGNGごめん、256バイトだった。
0067デフォルトの名無しさん
NGNG0068デフォルトの名無しさん
NGNG(conio.hだけでなんとかなるという人はどうやってるの?)
0069デフォルトの名無しさん
NGNG0070デフォルトの名無しさん
NGNG0071継承(課長)クラスのオーバーライド
NGNGそういうときには、あなたからロクでもない情報を
上書きするまともな情報を上司に流し込んで、
上司を正しくコントロールしましょう。
あるいはそう仕向けましょう。
0072ななし
NGNG0073デフォルトの名無しさん
NGNGhttp://cr.yp.to/software.html
のLibrary documentationにあるの使えってというのもありかも・・
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNG10人プログラマがいたら、10個のprintfもどきがリンクされる
の?(実際、標準ライブラリを禁じられたプロジェクトで似たような
ことがありました)
標準ライブラリがメモリとマシンパワーを食うのはみんな知って
いるけど、使うなというのは現実を無視した理想論に過ぎないの
では?
(客先から押し付けられる標準ライブラリもどきもかなりウザイし)
0076デフォルトの名無しさん
NGNG■ このスレッドは過去ログ倉庫に格納されています