[過去ログ] C言語なら俺に聞け 163 (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
764: (ワッチョイ 4df4-bRAX) 04/09(水)00:23 ID:Z/QH/Jgt0(1) AAS
Linux 板で聞いた方が回答ありそうな気がする。
765
(1): (ワッチョイ ae7e-GhsC) 04/09(水)15:00 ID:cB69i6Vg0(1/2) AAS
const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }

String tenki_i = "01";

char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }

String tenki_i = "01";

char* y_icon; // FIXME 型が分からない

if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";

sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);

t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
766: (ワッチョイ ae7e-GhsC) 04/09(水)15:01 ID:cB69i6Vg0(2/2) AAS
>>765
コピペ間違えました
正しくは以下です

char*const unsigned char t100_day[3807] PROGMEM = { 0x89, 0x50, 0x4e, 略, }
const unsigned char t100_night[3568] PROGMEM = { 0x89, 0x50, 0x4e, 略, }

String tenki_i = "01";

char* y_icon; // FIXME 型が分からない

if (tenki_i == "01") y_icon = "t100_day";
else if (tenki_i == "01_n") y_icon = "t100_night";
else if (tenki_i == "08") y_icon = "t200_day";
else if (tenki_i == "08_n") y_icon = "t200_night";
else y_icon = "t999_day";

sprite.drawPng((std::uint8_t*)y_icon, sizeof(y_icon), 0, 25);

t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
767: (スッップ Sd22-yI6P) 04/09(水)15:16 ID:qDwL9bg0d(1) AAS
>>755もそうだし書いちまったもんはしょうがねーけどコードを載せる時は
どうしろこうしろって書いてあんだから従えよ
アンタどこ行ってもそんな感じなのか?
768
(2): (ワッチョイ 79f9-GhsC) 04/09(水)15:24 ID:Hnk7Q6m60(1) AAS
すみません、書き直しました
外部リンク:ideone.com

t100_dayなどは画像なんですけど、tenki_iの中のstrによって画像を変えたいです。
y_iconはどうやって指定したらいいでしょうか?
769
(1): (ワッチョイ 06a6-9hLw) 04/09(水)15:27 ID:lI8vd/RJ0(1) AAS
>>755
fork呼んだ親プロセスがreturn 0でいきなり終わってるのがダメ
wait呼んでプロセスの終了待ちしろ
770: はちみつ餃子◆8X2XSCHEME (ワッチョイ cd32-xzp7) 04/09(水)18:01 ID:06ntJanv0(2/3) AAS
>>768
その断片的なプログラムではよくわからんが型を合わせるだけなら y_icon の宣言はこうなるべきだと思う。

const unsigned char* y_icon;
771: はちみつ餃子◆8X2XSCHEME (ワッチョイ cd32-xzp7) 04/09(水)18:30 ID:06ntJanv0(3/3) AAS
>>768
ところでそれは C++ じゃない?
なんでこのスレで聞くの……。
772: 755 (ワッチョイ 6e2a-ZtHn) 04/09(水)19:53 ID:dFJfWRF+0(1) AAS
>>769
「お騒がせしました。」と言ったので、勝手ながら質問を終えた気がしていた。見てくれて有り難う。

>>755,762 については、Ubuntu においても sudo で execl は動作していた。
動作しないように見えたのは、Ubuntu 特有のファイル権限設定があり、root といえどもファイルにアペンドできないせいだった。Qiita にあったサマリが解りやすい。

外部リンク:qiita.com追記
> Ubuntu の /tmp のユーザファイルに root で追記できない

全く C言語に関係なかった。ごめんちゃい。
773
(1): (アウアウウー Sa21-NXaD) 04/20(日)14:12 ID:RiHDJnuQa(1) AAS
stdbool.h 真面目に使ってる人いる?あるいは使ってない方がおかしい?
774: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7932-C6fW) 04/20(日)16:06 ID:srj6a33k0(1/2) AAS
原則としては論理型が必要であれば stdbool.h (内で定義される bool) を使うべきだと思う。
論理型が C99 で導入されるより前の古いプログラム中で bool という名前を使っている場合に配慮して論理型の名前を _Bool にした上でその別名の bool を stdbool.h 内で定義するという変な構成になっている。
(もし bool という名前を独自の定義で使っている場合は単に stdbool.h を使わないという選択が可能。)
このような状況から、互換性の問題がなければ論理型は bool という名前にしたかったし、論理型の値は true, false と書きたいという意図が感じられる。
自分が書くプログラム内で名前が衝突するような問題がないのなら意図に乗っかっておくのが無難そうに思われる。

C23 からは bool, true, false がキーワードとして直接にサポートされるようになって stdbool.h は意味を失いただ存在するだけになった。
こういう変更をする以上はこれが C のあるべき新しい姿と考えられてるってことなんだろう。
stdbool.h を使うことで (古い規格でも) 新しい姿を先取りできるわけ。

ただ、 C23 の変更はちょっとだけ互換性を損なう部分があるから注意を要する。
stdboo.h で定義される旧来の true, false は 1, 0 に展開されるマクロで、要するに型で言えば int だった。
C23 からの true, false は bool 型のリテラルという立場を持つ。
これが問題になるケースはそれほどないとは思うけど……。
775: (ワッチョイ a95f-0ulL) 04/20(日)16:30 ID:VYLrteqj0(1) AAS
bool型だと関数成功はtrueで1
int型だと関数成功で0とか普通
混ぜるな危険
776: (ワッチョイ 6db1-h0BB) 04/20(日)17:33 ID:SQJ2+pRN0(1/2) AAS
戻り値が負数ならエラーってやつが(ry
777
(2): (ワッチョイ 5e93-M5IX) 04/20(日)18:02 ID:AC61QJPP0(1) AAS
関数の結果がboolのやつはエラー原因丸めて何が問題かわからないからクソだよな
778
(1): (ワッチョイ 8a7a-I3kk) 04/20(日)18:06 ID:sZ1mcHs70(1) AAS
>>773
なんでstdbool.hがあるのかよく分からないってこと?
779: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7932-imSP) 04/20(日)19:55 ID:srj6a33k0(2/2) AAS
>>778
「真面目に」というワードから「そんなにカッチリやるほどのもんかね?」みたいなニュアンスを感じる。
意味はわかった上でそれほど価値を感じてないのだと思う。
780
(1): (ワッチョイ f9ee-0INX) 04/20(日)21:08 ID:0ZeTNaMX0(1) AAS
#define false 1==0
#define true !false
不真面目なんでいつもこれでやってました
781: (ワッチョイ 6db1-h0BB) 04/20(日)21:22 ID:SQJ2+pRN0(2/2) AAS
>777
エラー理由が必要なやつは引数に返り値用ポインタ要求する設計になってんじゃね?
782: (アウアウウー Sa21-NXaD) 04/21(月)02:34 ID:DqUDvQMka(1) AAS
>>777
関数の結果の型がboolのやつが-1を返す例もあってな
783
(1): はちみつ餃子◆8X2XSCHEME (ワッチョイ 65d3-imSP) 04/21(月)05:17 ID:jNnWMUsR0(1/2) AAS
>>780
stdbool.h がやってるような
#define false 0
#define true 1
ではなく無意味に遠回りな書き方をする理由は何?
784: (ワッチョイ 6639-nw4i) 04/21(月)05:35 ID:gJLXVah/0(1) AAS
そういや、boolの実値は処理系依存とはるか昔に習ったようなキモス
785
(1): (スッップ Sd0a-Rq/v) 04/21(月)05:47 ID:wZXY8H1ed(1) AAS
>>783
FAQを読め
786: はちみつ餃子◆8X2XSCHEME (ワッチョイ 65d3-imSP) 04/21(月)05:54 ID:jNnWMUsR0(2/2) AAS
>>785
これのこと?
外部リンク[html]:c-faq.com
そういのを好む人もいるとだけ書かれていて、理由の説明はない。
787: (ササクッテロリ Spbd-0ulL) 04/21(月)09:56 ID:i498vk5cp(1) AAS
#define TRUE (0==0)
#define FALSE !TRUE
この書き方はまだ世の中がBASICでソフト組んでた頃に見たわ
たぶんそれ以前のどこか別の言語からの輸入なんだとは思うが
かっこいいから好んで使ってる
788
(1): (ワッチョイ 6582-0ulL) 04/21(月)09:58 ID:JjvQDxsX0(1) AAS
まあ、まだtrueが0以外って仕様だった頃に、より処理系に沿った正確な値が欲しかったんだ
789: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7932-C6fW) 04/21(月)11:43 ID:++xqwTI40(1/2) AAS
>>788
PDP-11 時代の C のリファレンスマニュアルを見つけることが出来た。
外部リンク[ps]:web.archive.org
1975 年頃のもので、このときすでに比較演算子や等価演算子は 1 か 0 を返すことになっている。
たぶん最初からそうだったと思う。
C の基礎になった B の時点で既にこのような仕様なので。

ただ、全ての処理系が完璧に同じ仕様に沿っていたわけでもないだろうし、当時の事情の中で有用なテクニックだった可能性はあるかもしれない。
790
(1): (ワッチョイ 9e02-4o74) 04/21(月)12:00 ID:QKqUxhO90(1) AAS
いまでも「0は偽」という仕様しか謳われてないように見えるがどうだろう

むしろ「偽は0」という仕様が消えているようにも思えるが、どうだったっけ
791: はちみつ餃子◆8X2XSCHEME (ワッチョイ 7932-imSP) 04/21(月)12:43 ID:++xqwTI40(2/2) AAS
>>790
_Bool は整数型 (標準符号無し整数型) に分類されている。
整数型は他の整数型に変換したときに変換後の型で表せる範囲であるなら同じ値になるルールなので _Bool 型の 0 は 0 だよ。
792: (ワッチョイ f9ac-0INX) 04/21(月)12:51 ID:NLKNLeTR0(1) AAS
関数の戻り値だと、
0は正常終了、非0は異常終了
というのが多かったと思う
793: 警備員[Lv.1][新芽] (ワッチョイ 351a-kvZ8) 04/21(月)13:16 ID:3FvSqisv0(1) AAS
論理型のある言語でも
If b = True Then
なんて書かれるとモゾモゾしてしまう
1-
あと 209 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ

ぬこの手 ぬこTOP 0.020s