C++相談室 part166 (630レス)
C++相談室 part166 http://mevius.5ch.net/test/read.cgi/tech/1745631298/
上
下
前
次
1-
新
通常表示
512バイト分割
レス栞
502: デフォルトの名無しさん (ワッチョイ 8e1a-9Qg/) [sage] 2025/06/30(月) 19:44:03.19 ID:etdu4EFd0 長い名前空間の扱いの質問なのですが、 例えばA::B::C::DみたいなクラスD内でP::Q::R::SのようなクラスSを使用していて ヘッダーファイルが namespace A::B::C { public class D { void foo(P::Q::R::S& s); }; } みたいな感じになるのですが、実際にはこのP::Q::R::Sが非常に長く正直見苦しいです かといってusingをヘッダー内で使うのは良くないですよね? こういう場合にP::Q::R::Sの部分を簡潔な表記にする方法はありますでしょうか http://mev
ius.5ch.net/test/read.cgi/tech/1745631298/502
503: デフォルトの名無しさん (ワッチョイ e794-iZCu) [sage] 2025/06/30(月) 20:47:28.37 ID:CUK0Fuvn0 namespace pqrs = P::Q::R::S でいいんじゃない? http://mevius.5ch.net/test/read.cgi/tech/1745631298/503
504: デフォルトの名無しさん (ワッチョイ 7b7c-9nZq) [sage] 2025/07/01(火) 21:41:31.12 ID:W7Fp4vWi0 Sしか使わないならusing P::Q::R::S; http://mevius.5ch.net/test/read.cgi/tech/1745631298/504
505: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b32-0lSL) [sage] 2025/07/01(火) 22:22:06.69 ID:kHEih0Y20 >>504 using P::Q::R::S; したらもしも using namespace A::B::C; したときに P::Q::R::S も探索対象になってしまう。 使う側に余計な影響を与えないようにするには別名をつけるほうがより良い。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/505
506: デフォルトの名無しさん (ワッチョイ 3641-ctb7) [] 2025/07/03(木) 00:24:37.09 ID:ye5zZInN0 エンベデッド分野は今でもC/C++が主流なの? AIに任せられない分野だから生きのこれそうで気になっておりまする http://mevius.5ch.net/test/read.cgi/tech/1745631298/506
507: デフォルトの名無しさん (アウアウウー Sabb-H9/A) [sage] 2025/07/03(木) 09:26:35.93 ID:q23h/8z8a 良いんじゃね http://mevius.5ch.net/test/read.cgi/tech/1745631298/507
508: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 4730-0lSL) [sage] 2025/07/03(木) 11:06:49.67 ID:4Hn86Ej50 >>506 組み込みシステムも多様なので性質や規模によるでしょ。 リアルタイム性が重要なところでは C/C++ は主流のままだと思うけど、プロジェクト全体が C/C++ だけで構成されることは少なくなるんじゃない? http://mevius.5ch.net/test/read.cgi/tech/1745631298/508
509: デフォルトの名無しさん (ワッチョイ 420e-vr7j) [] 2025/07/03(木) 11:57:31.86 ID:0Ka09OV10 リアルタイム性はOSがやることだし 言語関係ないよ http://mevius.5ch.net/test/read.cgi/tech/1745631298/509
510: デフォルトの名無しさん (ワッチョイ e79a-0q56) [] 2025/07/03(木) 12:22:21.27 ID:dQk6sKVB0 Javaや.NETはGCでストップ・ザ・ワールドが発生するからリアルタイムに弱いらしい 最近は目標停止時間を1ms以下に抑えるGCもあるけど、あくまでも目標であって保証ではないからね http://mevius.5ch.net/test/read.cgi/tech/1745631298/510
511: デフォルトの名無しさん (ワッチョイ 4e5f-nkZs) [sage] 2025/07/03(木) 15:27:43.14 ID:d0nwmVKl0 >>509 イベントスレッドでIOされてもOSがなんとかすると思ってんの? http://mevius.5ch.net/test/read.cgi/tech/1745631298/511
512: デフォルトの名無しさん (アウアウウー Sabb-H9/A) [] 2025/07/04(金) 08:50:43.54 ID:fF3rQ1JLa 組み込み リアルタイムOS これほど曖昧な言い回しは他に無い http://mevius.5ch.net/test/read.cgi/tech/1745631298/512
513: はちみつ餃子 ◆8X2XSCHEME (ワッチョイ 7b32-0lSL) [sage] 2025/07/04(金) 10:17:03.12 ID:wZ441BSd0 >>509 リアルタイム性が重要なところというのはまさにそのリアルタイム OS のことで、それらを書くのに C/C++ が主流という話なんやで。 そんで既存の OS を使う場合でも次にアプリケーションを用意すれば動くというわけではなくて、組み込みシステムなら大抵の場合にデバイスドライバも書かなければいけないし、 OS が面倒みてくれる範囲は小さい。 低レイヤの整備がすでに整っている状況ならアプリケーションはもうちょっと言語の選択肢
はあるかもね。 http://mevius.5ch.net/test/read.cgi/tech/1745631298/513
514: デフォルトの名無しさん (ワッチョイ a332-vr7j) [] 2025/07/04(金) 10:58:10.60 ID:8a61AjkK0 リアルタイムOSでないOSで、リアルタイム性重視ならそうだが リアルタイムOSで作るなら言語は何でもいい http://mevius.5ch.net/test/read.cgi/tech/1745631298/514
515: デフォルトの名無しさん (ワッチョイ a332-vr7j) [] 2025/07/04(金) 10:59:28.16 ID:8a61AjkK0 例えば24時間365日止まってはいけない産業用制御なんて C++でも何でもない http://mevius.5ch.net/test/read.cgi/tech/1745631298/515
516: デフォルトの名無しさん (ワッチョイ 6fd6-sHGY) [sage] 2025/07/04(金) 11:09:00.86 ID:7dTC+3QP0 シェルで済むならシェルにしなさい。(UNIX) http://mevius.5ch.net/test/read.cgi/tech/1745631298/516
517: デフォルトの名無しさん (ワッチョイ 4ef9-nkZs) [sage] 2025/07/04(金) 11:13:55.32 ID:lC93JhvQ0 言語なんでもいいって? リアルタイムOSってそもそも言語の選択肢少ねーだろ http://mevius.5ch.net/test/read.cgi/tech/1745631298/517
518: デフォルトの名無しさん (ワッチョイ 4ef9-nkZs) [sage] 2025/07/04(金) 11:19:04.05 ID:lC93JhvQ0 >>512 いうほどあいまいか? せいぜい中身がLinux、Windowsでアプリのインストールも自由みたいなやつだけだろ http://mevius.5ch.net/test/read.cgi/tech/1745631298/518
519: デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/07/04(金) 20:28:14.57 ID:wNUogzY00 >>511 ちょっI/Oしたらやっぱリアルタイム性に影響出るの?! んまー秒単位でwaitして帰ってこないみたいな極端なI/Oポートがあったらそうかもしれないが http://mevius.5ch.net/test/read.cgi/tech/1745631298/519
520: デフォルトの名無しさん (ワッチョイ 06a1-6mIp) [sage] 2025/07/04(金) 20:39:26.88 ID:wNUogzY00 >24時間365日止まってはいけない産業用制御 冗長構成かフェイルオーバーするような枠組みとしての取り組みが第一優先な希ガス…… ソフトウェアーの冪等性により同じバグが同じタイミングで発生して冗長構成が無意味化するする危険性については 十分テストしてバグを撮ったのちに起動タイミングをずらすなどの工夫を行えばポアソン分布の同時確率か何かに従って無視できうる(と思う さすがに原子炉の制御とかだとプロセス単体も形式検証して他分
野よりもっと十分検証するらしい(間接伝聞 http://mevius.5ch.net/test/read.cgi/tech/1745631298/520
521: デフォルトの名無しさん (ワッチョイ eb86-SoaL) [sage] 2025/07/05(土) 12:14:15.08 ID:JEWbe+UQ0 そんなレベルはラダー図で書くやろ http://mevius.5ch.net/test/read.cgi/tech/1745631298/521
522: デフォルトの名無しさん (ブーイモ MM8e-nkZs) [sage] 2025/07/05(土) 12:31:12.20 ID:yj3snSzGM というかリアルタイムOSの話から関係ない24/365システムの話を出すあたりよくわかってないことを雰囲気で話すタイプの人でしょ http://mevius.5ch.net/test/read.cgi/tech/1745631298/522
523: デフォルトの名無しさん (ワッチョイ af77-vr7j) [] 2025/07/05(土) 20:19:54.08 ID:iY4IPiMb0 >>521 C++ではないわな http://mevius.5ch.net/test/read.cgi/tech/1745631298/523
524: デフォルトの名無しさん (ワッチョイ ffa1-BzvG) [sage] 2025/07/06(日) 06:14:16.80 ID:B20RUTJT0 質問なのですが ケースA) std::stringstream ist("A B"); char c1, c2, c3; に対し、ist >> c1; ist >> c2; ist >> c3; とすると ist >> c2 は正常に読めて、ist >> c3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動なのですが (ちなみに読み取った文字は c1='A'、c2='B'。c3の読み取りは行われない ケースB) std::stringstream ist("A B"); std::string s1, s2
, s3; に対し、ist >> s1; ist >> s2; ist >> s3; とすると ist >> s2 を実施した時点で早々に!ist.good()かつist.eof() となって挙動が相違し (ちなみに読み取った文字列は s1="A"、s2="B"。s3の読み取りは行われない ケースC) しかしBの後に空白を追加してstd::stringstream ist("A B "); とすると、 ist >> s2 は正常に読めて、ist >> s3 を実施した時点で!ist.good()かつist.eof() となってgetc()と類似のEOF検知挙動になる (ちなみに読み取った文字列は s1="A"
、s2="B"。s3の読み取りは行われない となってケースB)とケースC)で共通に使えるような最終要素まで読み取り完了判定ロジックが無く std::istream神話が崩壊したんだけどこれっておま環? 一体どうすれば……orz http://mevius.5ch.net/test/read.cgi/tech/1745631298/524
525: デフォルトの名無しさん (ワッチョイ ffa1-BzvG) [sage] 2025/07/06(日) 06:16:00.70 ID:B20RUTJT0 確認用サンプルコード: https://ideone.com/Guifzs http://mevius.5ch.net/test/read.cgi/tech/1745631298/525
526: デフォルトの名無しさん (ワッチョイ ffa1-BzvG) [sage] 2025/07/06(日) 06:47:52.68 ID:B20RUTJT0 とりま上のコードからフォークしたソースコード https://ideone.com/4WPZtB の parse_as_string_with_common_logic(std::istream& is, std::string& s, bool& bErr) みたいな判定処理にしたらケースB、Cを共通に扱えるような印象 なのですが正しくはどうすればよいかわからん…… http://mevius.5ch.net/test/read.cgi/tech/1745631298/526
527: デフォルトの名無しさん (ワッチョイ 17a6-aNVA) [sage] 2025/07/06(日) 07:26:05.90 ID:oIAQiRlj0 一般的な話ならchar以外の>>で一貫した挙動を期待するのに無理がある 期待した文字が来なかったらungetするかどうか?ファイル最後の改行をどうするか?シグナルが来たら?とか色々あるし ケースBで言えば"B"の後に文字が続いていればs2に含まないといけないのだから内部的にはケースAで言えばc3まで試し済みの状態 EOFフラグを見るのではなく例外で受け取ったほうが確実 http://mevius.5ch.net/test/read.cgi/tech/1745631298/527
528: デフォルトの名無しさん (アウアウウー Sa9b-zcFv) [sage] 2025/07/06(日) 10:18:34.40 ID:RFZXbMVga ケースB、Cを共通に扱える ist.eof()でいいやん Bが一回余分にループするのは気持ち悪いけど 気にしたら負け http://mevius.5ch.net/test/read.cgi/tech/1745631298/528
529: デフォルトの名無しさん (ワッチョイ 1f7f-Wka8) [sage] 2025/07/06(日) 10:53:22.37 ID:14zTNASB0 普通はoperator bool(または fail())を使う http://mevius.5ch.net/test/read.cgi/tech/1745631298/529
530: デフォルトの名無しさん (ワッチョイ ffa1-BzvG) [sage] 2025/07/06(日) 10:56:09.61 ID:B20RUTJT0 >>527 だいたいわかりた is >> s ライブラリの「>>」の仕様的にsが任意のクラスで有り得るから、 例えばsが複素数クラスで2つの要素を読み取るブツなのに対し要素を1つだけ読み取れなかった場合、 みたいなのが生じ得るがis.eof()ではそこまで表現できない故にライブラリ側では char以外の一般のケースについて責任を持たないというと理解すた、 従って、test_parse_as_string_with_common_logic(const char* szInput, bool& bErr
)を charの読み取りによってeof()判定するように直したわ これならiostreamの正当な使い方だけで構成されておりかつ目的を果たせているはず…… https://ideone.com/eaYGEt http://mevius.5ch.net/test/read.cgi/tech/1745631298/530
531: デフォルトの名無しさん (ワッチョイ ffa1-BzvG) [sage] 2025/07/06(日) 11:00:55.07 ID:B20RUTJT0 >>528 >Bが一回余分にループするのは気持ち悪いけど いきなりis >> s してその直後のeof()を当てにするロジックである限り、 リンク先のケースBの挙動となり、最後の要素に引き続く空白文字がないとき 最後の要素が入力ストリームにあるのに受け取れないというもっと深刻な事態となる以下略 >>529 operator boolはis.good()と同じはず…… なおかつそれ単独では(is >> sのsがchar以外のとき)ケースBの解決になんね ht
tp://mevius.5ch.net/test/read.cgi/tech/1745631298/531
メモ帳
(0/65535文字)
上
下
前
次
1-
新
書
関
写
板
覧
索
設
栞
歴
あと 99 レスあります
スレ情報
赤レス抽出
画像レス抽出
歴の未読スレ
AAサムネイル
Google検索
Wikipedia
ぬこの手
ぬこTOP
0.015s