C++相談室 part164

■ このスレッドは過去ログ倉庫に格納されています
2023/05/09(火) 11:50:52.06ID:EYc2I7oW0
!extend:checked:vvvvv:1000:512
!extend:checked:vvvvv:1000:512
↑同じ内容を3行貼り付けること

次スレは>>980が立てること
無理なら細かく安価指定

※前スレ
C++相談室 part163
https://mevius.5ch.net/test/read.cgi/tech/1672409791/
VIPQ2_EXTDAT: checked:vvvvv:1000:512:: EXT was configured
2023/07/26(水) 21:11:20.60ID:T1zuvG990
My intestine is a kind of FIFO.
580デフォルトの名無しさん (ワッチョイ 0720-rRCM)
垢版 |
2023/07/26(水) 21:14:18.52ID:4fMh7lxL0
bullshit
2023/07/26(水) 21:21:43.95ID:Z/zSkMd/0
>>576
現実がクソなんだよ。
それでもコードにしなきゃならないところ(低レイヤとか速度がいるところとか言語を跨ぐインターフェイスとか)でCが使われるから必然的にクソになる。
他の言語で書いたところでたぶんクソだぞ。
2023/07/26(水) 22:07:29.96ID:iOxX8HKcM
自分としては古いC++のコードの方がクソの山に見える
Cはまだまし
583デフォルトの名無しさん (ワッチョイ 6701-I2OL)
垢版 |
2023/07/26(水) 22:16:26.68ID:jPIzcFjy0
5chからの新しいお知らせは、他の板には出ないんだな
2023/07/27(木) 04:04:24.35ID:QeVlkja60
古い事自体は悪い訳ではないよね
質が低いけど影響範囲が大きくて修正されずに生き延びてる糞コードが悪いだけで
2023/07/27(木) 09:00:04.57ID:zEDi2bcm0
>>578
stackだけだと積むというだけで高さはわからないような
they stacked shit that highというのが原文
2023/07/27(木) 09:00:15.65ID:GoQM94Wca
>>582
ほんそれ
+1
2023/07/27(木) 09:39:10.27ID:4LOg1fU50
>>576
PythonとかJavaScriptだけの世界に生きてる人たちはC++はクソとか言ってそうな気がする
2023/07/27(木) 09:49:28.34ID:GoQM94Wca
実際C++は糞だと思う
Cの方がマシ
2023/07/27(木) 10:16:37.98ID:+SEMblDr0
VCでビルドしたC++ライブラリって
mingwでビルドしたオブジェクトファイルとリンクできないよね?
Cライブラリだとできるけども
2023/07/27(木) 10:25:00.16ID:uqLQvp0Q0
c++だとマングリングの規則がコンパイラごとに違うから無理なはず
2023/07/27(木) 10:37:09.86ID:+SEMblDr0
>>590
ありがとうございます
2023/07/27(木) 11:15:58.50ID:p+3LvAw40
COM の規約で運用するという方法もあるけど割とめんどい
2023/07/27(木) 12:11:09.64ID:+SEMblDr0
C++ライブラリとCライブラリの両方があったので
素直にCライブラリの方を使うことにします
594デフォルトの名無しさん (アウアウウー Sa2b-4APs)
垢版 |
2023/07/27(木) 14:18:54.70ID:SGfMLUd3a
>>585
その原文の訳が「まるでそびえ立つクソだ!」だからhighly stacked shitあたりだろうけど、あれはハートマン軍曹という異常者の語彙だから、多分pile of shitなんかの方が一般的かもね
2023/07/27(木) 21:44:21.80ID:alYzqiaL0
msvcからmingwに移行しようと思い、7zを展開したらディフェンダーちゃんが反応したので何かと思ったら
2023/07/27(木) 22:58:54.41ID:p+3LvAw40
実行ファイルを生成するものは割りとひっかかる
2023/07/28(金) 10:55:13.63ID:Zgvcm9f5a
7zを展開する前にファイルをExoplorerから右クリックで開いて
ディフェンダー無効にしてから展開するだけだろ
2023/07/28(金) 13:11:52.02ID:6yxKL9JFd
Defenderに無害認定されるまで戦い続けるマ?
2023/07/28(金) 13:58:16.94ID:AMhr/ZcZ0
どういう設定でコンパイルしたら有害認定されるかむしろ知りたいわ
2023/07/28(金) 20:53:22.55ID:nOGNEf1T0
oss物は使ってくれるなというms様のお達し?
2023/07/28(金) 21:03:20.13ID:iCEYdRhP0
wslでLinux飲み込んだのに?
2023/07/28(金) 21:12:30.62ID:yKS6EUDz0
そういや従量課金回線むけに通信量を制限するソフトを入れたら
通信を阻害するマルウェアとして検出されたことがある。
解釈によってはそりゃそうだと思うし、
セキュリティツールは疑陽性が増えてでも偽陰性を
減らす方向に調整するのはしょうがないんじゃねーの
603デフォルトの名無しさん (ワッチョイ 8f9c-JfPF)
垢版 |
2023/07/29(土) 01:25:10.10ID:eLz5SM1d0
マイクロソフトとしてはストアアプリとして配信して欲しいんだろうね
ZIPなどの野良アプリ配布は不遇の時代よ
2023/07/29(土) 01:41:06.31ID:mO2Fj1W+0
テレメスパイウェアage
2023/07/30(日) 09:49:16.34ID:azQXcNDBa
>>599
コンパイル後のexeがなぜか毎回消える問題は何かのバージョンで過去にあった
2023/07/30(日) 11:40:03.78ID:/52qmc2G0
>>605
恥ずかしがり屋め//
2023/07/30(日) 19:58:32.07ID:cURCmIiS0
Defender様はOS内蔵のC#で作ったexeも容赦なく消してくるぞ
名前が他と被ってたり変な場所に置いたりしてると割と起こる
2023/07/30(日) 23:32:06.49ID:Phugis3j0
初期化していないstd::optional <int>をdereferenceすると0として扱われます
boost::optional <int>だとAbortされるのですが
なぜstdではこのようになっているのかどなたかご存知ですか?
$ cat test.cpp
#include <optional>
#include <boost/optional.hpp>
#include <iostream>
using namespace std;
int main () {
std::optional <int> i0;
cout << *i0 << '\n';
if (i0) cout << "Initilized\n";
else cout << "Not initilized\n";
boost::optional <int> i1;
cout << *i1 << '\n';
return 0;
}

$ ./test
0
Not initilized
test: /usr/include/boost/optional/optional.hpp:1212: boost::optional<T>::reference_type boost::optional<T>::get() [with T = int; reference_type = int&]: Assertion `this->is_initialized()' failed.
Aborted (core dumped)
2023/07/30(日) 23:50:56.20ID:1/o7VgXA0
>>608
どちらも事前条件違反での未定義動作の結果。
「0として扱う」と定められているわけじゃない。
boost が assert で止めてくれているのは親切。
2023/07/30(日) 23:58:13.09ID:Phugis3j0
boostの方が親切ですよね
何でstdでなくしたんでしょ?
2023/07/31(月) 00:15:55.53ID:ulrQSEBD0
stdはパフォーマンスを気にしたんでしょうかね?
2023/07/31(月) 00:17:50.97ID:kuDsfsru0
未定義動作をどうしようとコンパイラの勝手
2023/07/31(月) 00:42:57.84ID:ulrQSEBD0
>>612
boostでは初期化済みかどうかを確認していたのを
stdでなぜ確認を外したのか?って問いになります
>>611に書いたようにパフォーマンスってこでしょうかね?
2023/07/31(月) 01:10:19.51ID:cE0Z6rmj0
>>613
std::optionalの仕様がboost::optionalを参考にしたのは確かだろうけど、
std::optionalの実装はboost::optionalの実装をもとにしたわけじゃないだろうから、
不要なチェックが無い状態でむしろ自然。
何か意図を持って「なくした」「外した」などという事実がおそらく無い。
仮に意図的だったとして、ここで誰かがその質問にyes/noを答えても本当かどうかはわからない。
どうしても気になるならライブラリ実装者に聞くべき。
2023/07/31(月) 02:06:40.22ID:ulrQSEBD0
仕様はboostが元になっているのは間違いないので
規格に入れるときになぜこれを変えたのか理由が分かればなと考えました
proposal追ってる人でご存知の方がいればなと思いましたが
自分でも読んでみます
2023/07/31(月) 03:26:45.40ID:cE0Z6rmj0
>>615
仕様はどちらも事前条件違反での未定義動作で、変わってない。
なので仕様について調べてもおそらく答えは出ない。
assertの有無は実装の範疇。
2023/08/02(水) 01:27:09.22ID:UwRg95UI0
プログラミングの面接を受けた。言語は何でもいいというので今使ってるC++で予め申請。
ロジックを問う問題なので言語で差はつかない、という話... だったが実際は文字列処理
の問題が多く、これはスクリプト系とかの方が有利じゃないか

C++にはなんで文字列のsplit系はないんだろ。どうしてます? <- あ、これが雑多な質問w
2023/08/02(水) 01:29:42.76ID:UwRg95UI0
ちなみに自分は以前Pythonを使っていた時期もJavaを使っていた時期もあるけど
今は頭が「C++脳」になっている気がして、とっさにそれらを使うとなると不安を感じたのだった
やはり常日頃から他の言語も回しておくべきだろうか
2023/08/02(水) 01:31:05.25ID:UwRg95UI0
マ系の話かもしれないですね、すみません
2023/08/02(水) 01:45:10.69ID:JKibevwe0
次の問題でグラフにプロットしろとか言われそうだなw
2023/08/02(水) 01:58:11.71ID:Vhf3uqZN0
>>617
普通は申告した技能に嘘がないことを確かめるのが
面接の主な目的であって
正解率に意味があるような試験ではないよ。
2023/08/02(水) 06:20:23.71ID:NkBPLpHI0
>>617
istringstream と getline を使えば、区切られた文字を順番に取り出せる。
空白文字区切りなら、getline の代わりに >> が使える。

https://maku77.github.io/cpp/string/split.html
623デフォルトの名無しさん (アウアウウー Sa1f-IPSQ)
垢版 |
2023/08/02(水) 09:31:21.06ID:4pI1Wfnva
>>617
C/C++でそれが出来て初めて「C/C++が使えます」って言えるんだ
2023/08/02(水) 09:36:40.40ID:y1hozJP20
1つの言語で覚えたあたらしい機能を実現するのに他の言語ではどう書く?って感じで比較しながら書くと記憶が精緻化しやすく忘れにくくなる
625デフォルトの名無しさん (アウアウウー Sa1f-IPSQ)
垢版 |
2023/08/02(水) 10:22:30.40ID:4pI1Wfnva
>>618
「C++脳」
良く言えるな
C++も不安だらけじゃないか
2023/08/02(水) 12:38:15.38ID:y1hozJP20
コーディングテストのはずがメインメソッド作ってって言われたときはこちらからお断り申し上げたことがある
2023/08/02(水) 12:43:22.62ID:y1hozJP20
チンチンシュッシュシュですわ
2023/08/03(木) 09:24:52.48ID:lr2Ednh70
>>625
あ、別にC++が得意という意味でなく、それ以外の言語を使うとき頭がすぐに切り替わらない、
というぐらいの話で

結局そのとき自分は文字をチェックして区切り文字の位置を調べてstring.substr()で切り出し
vector<string>に追加というベタな感じを。でも他の言語でsplit()を呼んで終わりなのと比べると
無駄に焦ったと思われ >>622はすっかり忘れていた
2023/08/03(木) 09:35:40.45ID:IPuBCl990
自分で作れよw
簡単だろ
2023/08/03(木) 09:36:19.80ID:HBD/4AdY0
>>628
C++20 以降なら std::views::split を使えるよ。
2023/08/03(木) 20:08:30.72ID:IJZbd6wk0
>>628
c++がマニアックなのはまぁわかる
他の言語に切り替わらないっていうのは鍛錬不足じゃあ無いのかね
c++で書いたものを見ながら別の言語に書き換えるっていう作業の時間が足りてないんじゃない?
632デフォルトの名無しさん (ワッチョイ 43a5-IPSQ)
垢版 |
2023/08/04(金) 21:09:58.67ID:5lu3SOws0
プリプロセッサディレクテブでマクロを組む方法はないでしょうか?
#ifndef XX
#define XX 1
#endif

define_default (XX, 1); <-こんな感じにマクロ化したい
2023/08/05(土) 01:51:28.51ID:L/LBNngA0
🤔…(こんな感じとは?)
2023/08/05(土) 02:15:04.78ID:L/LBNngA0
スマン言いたい事分かった

直接の回答は:わからん。
多分、君の実装アイデアでは無理。
C++というかCな気がするが、コンパイラの規格の中に翻訳作業のステージが確か7つ位定義されてて、その一つがプリプロセス。で無限ループしないようになってたような。


本当にやりたいであろう事(定数定義の記述に定形があって煩雑なのをシンプルに書きたい)なら、私なら別の方法でやる、けどそれは聞かれてないよね
2023/08/05(土) 09:38:26.20ID:wvUeqD5zd
定義をマクロ定義する事はできないよ
都度意味を変えてincludeで読み込ませるとか
2023/08/05(土) 10:20:09.70ID:9rqysa6s0
よく分からんがC++の範疇じゃなくてcamkeとかコンパイラオプションでやる事っぽく見える
637デフォルトの名無しさん (ワッチョイ 31a5-mBaV)
垢版 |
2023/08/05(土) 22:30:35.02ID:a9xEz2i50
コンパイルオプションでdefineを省略されていればデフォルト値を使うようなコードの構造にしたいのですが、
なるたけmakeやコンパイル環境に依存しないことが希望です。
プリプロセッサを使うと煩雑で読みづらくなってしまうので、カプセル化したいです。
C++ならもう少し洗練された方法がないものかと思うところですが、
定数定義の記述定形があって煩雑なのをシンプルに書く方法があれば教えて下さい
2023/08/05(土) 23:17:58.10ID:NzC+Rt9F0
現状のサンプルコードを書いた方が答えやすい
639デフォルトの名無しさん (ワッチョイ 31a5-mBaV)
垢版 |
2023/08/05(土) 23:34:29.13ID:a9xEz2i50
#ifndef XX1
#define XX1 1
#endif

#ifndef XX2
#define XX2 0
#endif
:
2023/08/06(日) 00:25:50.71ID:Mgx3ApDu0
C++ はなるべくマクロを使わずに済む方向に進化してはいるが
マクロを使うのであればそれより良い方法はないと思うよ。
2023/08/06(日) 01:54:30.05ID:7ys7hHtb0
俺ならテンプレート引数のデフォルト引数を使うけど、
既存のコードを何とかしたいって事かい?
2023/08/06(日) 04:00:21.32ID:VdM0xi000
>>637
君の求めてるエレガントな方法は、知らない。スマンね

私がもし 今すぐ 仕事でやる必要があるなら
XX1 1
XX2 0
というテキストファイルから、君の例示したソースファイルを生成する「ツール」を勝手に作って使い、手で書いたフリをする

数百あるならツールに意味があるし
もし聞かれたらツールで生成したと答えるが、正直どうでもいい
メンテフェーズでの1件2件の追加修正は手で書きゃいい
643デフォルトの名無しさん (ワッチョイ 7510-7C81)
垢版 |
2023/08/06(日) 04:31:49.92ID:VdM0xi000
ここって#とかの文字書けるのかな...


#!/bin/bash

put_data_list()
{
cat <<EOF
XX1 1
XX2 0
EOF
}


main()
{
while read NAME VAL
do
cat <<EOF
#ifndef $NAME
#define $NAME VAL
#endif

EOF
done
}

put_data_list | main
2023/08/06(日) 11:54:26.68ID:Mgx3ApDu0
その手のパラメータをマクロとして大量に定義する
必要があるときというのは
開発・実行環境ごとに切り分けたいという要求なことが多くて、
そうだとしたら環境依存を避けたいという要件設定が
ナンセンスってことになるんよ。
645デフォルトの名無しさん (ワッチョイ 054e-c/5M)
垢版 |
2023/08/06(日) 12:11:02.29ID:R5xvWuDw0
その開発・実行環境がコンパイラ含めてまるごと提供される場合だと、C(++)基本機能だけで済ませないと何かと面倒というのは分かる
ゲーム機とかがそれ
2023/08/06(日) 12:13:51.56ID:SuulMMGF0
マイコン用のヘッダなんかはそういうテクニックが駆使されてて環境依存を減らしてるから参考になるよ
arduinoみたいな特定のマイコンに依存してない環境では特に
2023/08/10(木) 05:18:21.73ID:cgZD1dE+0
最近はマイコンでもC++使うんですか?
普通にC使ったほうがいいと思うんですけどどうなってるんですか有識者の方
2023/08/10(木) 08:37:15.11ID:R9ss+SBt0
C++でもメモリを食わない書き方はあるとだけ言っておく
STLライブラリに恩恵を受けて育った温室育ちには理解出来んかもだがな
649デフォルトの名無しさん (ワッチョイ 054e-c/5M)
垢版 |
2023/08/10(木) 09:55:47.75ID:4skaSxsv0
マイコンのことは知らないが、いまさら、
//コメント
スコープ内ローカル変数
関数のオーバーロードや引き数の省略
bool型とture/false識別子
等がないC言語とか無理だなw
2023/08/10(木) 10:54:42.66ID:5Abh0bq20
>>649
その4つの内の3つはCにある機能だぞ
651デフォルトの名無しさん (ワッチョイ 054e-c/5M)
垢版 |
2023/08/10(木) 14:04:07.34ID:4skaSxsv0
組み込み向けでもC99つかえるの?
まぁ、最近はclangとかなのかな…日立コンパイラの恐怖とか思い出すわw
2023/08/10(木) 14:23:33.39ID:5Abh0bq20
スコープ内ローカル変数ってのが何を意味してるのかよくわからんが、
(関数ブロック以外でも) ブロックの先頭では変数宣言できるぞ。 C89 でも。
2023/08/10(木) 16:21:19.73ID:ygto10X60
>>650
C++から逆輸入されたんだっけ?
2023/08/10(木) 16:23:48.61ID:ygto10X60
マイコンって言ってももはや幅が広すぎるよな
2023/08/10(木) 16:42:27.27ID:5Abh0bq20
Z80 だって C99 対応コンパイラは有るくらいだし、現代でも売ってるマイコン
かつ C コンパイラが存在するなら大抵は C99 対応くらいはしてるんじゃね。
完璧に準拠ってほどではないかもしれんけど。
2023/08/10(木) 19:28:12.15ID:rVmtE6nS0
今ってマクロ使うよりもモジュールにしてstaticでやる方がオトクなんだって?
2023/08/11(金) 07:07:37.61ID:gKBPOQXo0
マイコンって関数呼び出しなんて重すぎてとんでもないmainに全部ベタ書きしろって世界でしょ?
そんなとこでモジュールなんて許されるのか
2023/08/11(金) 07:24:40.95ID:RJhU8z4K0
とんだ時代錯誤だな
関数作るだけで容量が満杯になるっていつの時代のマイコンだよ
今何世紀だと思ってんだよ
https://youtu.be/-c-SPVlIr7Q
2023/08/11(金) 07:59:20.53ID:gKBPOQXo0
そーなの?
昔受けた講習で「関数は重いので関数ポインタを扱う用途以外では作りません。処理をまとめるにはマクロかgotoを使います」って言ってて衝撃受けた口なんだけど
時代の流れなのかこの講習がタコなのかあなたがタコなのか専門外だから分からないよ
2023/08/11(金) 08:08:48.37ID:RJhU8z4K0
ホントに極小サイズの容量小さい昔のマイコンならアセンブラでハードウェアアドレスにI/Oコールして組み上げんだろうけどいまのマイコンはそのレベルを既に凌駕して逸脱してるから誰でも気軽に組みやすく仕上がってる
micropythonみたいなインタープリタも走るしな
2023/08/11(金) 08:32:55.43ID:4oMIZBsGM
関数を使わないのはRAMは少なくてスタックがシビアだからです
2023/08/11(金) 08:36:34.41ID:RJhU8z4K0
スタックフレームつくるからだろ
インラインで全部組めばスタック要らんくなるよ
コードの容量は増えるかもしれんけど
2023/08/11(金) 08:40:37.51ID:4oMIZBsGM
何らかの便利な仕組みがあるとそのせいでメモリが足りなくなることもあった

そのせいかどうかしらないけど過去はforの階層が7階層に制限されてたり今では意味不明
ブロックスコープの仕組みのためか?
ifとgotoにしたら回避できる
2023/08/11(金) 09:58:09.34ID:vt/fQ4Il0
プログラムを 2KiB 程度しか書き込めない PIC なんかもあるが
そのレベルの機器だとどうせ低レイヤにべったりと
依存せざるをえないだろうし、
C で極端な書き方をするくらいならもっと低級な言語を
使った方が楽かもしれないな。
そういう割り切りが出来ない程度の中途半端なのが一番困る。
665デフォルトの名無しさん (スフッ Sdd7-A0iR)
垢版 |
2023/08/11(金) 12:49:59.96ID:oqyg1NI/d
>>659
組み込みなら
関数が重い
じゃなくて
スタックが浅い
の間違いじゃないのか?
2023/08/12(土) 01:11:27.44ID:DKBxYxYv0
最近のは単価数百円で256kbとかメモリ積んでるんだな…
667デフォルトの名無しさん (ワッチョイ f358-yhDR)
垢版 |
2023/08/16(水) 17:21:20.72ID:hgmxYG6c0
その昔、使ってたHP-29Cがサブルーチンのネストが3段までで
その後に出荷されたHP-34Cが6段になってるの見て
おおーってなった懐かしい思い出
668デフォルトの名無しさん (ワッチョイ f358-yhDR)
垢版 |
2023/08/16(水) 17:40:41.84ID:hgmxYG6c0
今はinlineや関数テンプレートのように開いたサブルーチンが普通に使えるからなあ
669デフォルトの名無しさん (ワッチョイ 2702-Dztr)
垢版 |
2023/08/16(水) 22:34:48.53ID:YHO3HAlN0
https://i.imgur.com/2SPcox3.jpg
670デフォルトの名無しさん (ワッチョイ 5b94-J+rV)
垢版 |
2023/08/17(木) 00:57:31.86ID:VKXPNJiw0
>>669
Amazonギフトに交換できるんだ
2023/08/17(木) 15:51:12.83ID:BJu8USc1H
ちなみにその方法でアマギフ入手するとアマゾンアカウント停止させられるから気をつけてね
2023/08/17(木) 23:57:58.55ID:4XlHHMDQ0
ショボい詐欺はスルーで
2023/08/18(金) 07:50:49.06ID:ibegtSC/d
>>669
グロ
674デフォルトの名無しさん (ワッチョイ 5901-greZ)
垢版 |
2023/08/21(月) 17:47:44.07ID:mTvtbn+H0
週3日稼働案件の職種別月収ランキングNo.1は「データサイエンティスト」で月72万円。
上位7職種が月50万円を超える月収。ほぼ全ての案件がリモート可案件。

フリーランス・複業・副業の求人マッチングサービス『SOKUDAN(ソクダン)』を運営する
CAMELORS株式会社、週3日フリーランス・副業案件の時給月収年収・職種別
ランキングについて調査した内容をお知らせいたします
SOKUDANに掲載されているフリーランス・副業案件のうち、週3日案件に限定して
時給・月収・年収を職種別のランキング記事としています。
■調査サマリー
週3日稼働案件の月収ランキング1位は「72万円」でデータサイエンティスト
週3日稼働案件の平均月収「460,487円」、年収換算「553万円」
週3日稼働のフリーランス・副業案件の99.4%は「リモート可」
上位12職種が時給3,000円、週3日稼働で月収30万円を超える
上位7職種が時給5,000円、週3日稼働で月収50万円を超える
675デフォルトの名無しさん (ワッチョイ 3136-wdUj)
垢版 |
2023/08/21(月) 22:24:31.55ID:qha1IMDa0
>>669
貰うだけ貰うか
2023/08/22(火) 18:52:00.21ID:vz2M4TZw0
c++でGUI作る時のフレームワークって今は何が主流なんでしょうか。
昔は、MFCとか有名でしたが。
それとも、c#で簡単にui作って内部的にc++で処理するとかですかね。
2023/08/22(火) 20:03:04.11ID:+W4fml+10
Windows での話なら WinUI を活用する方法が現代的なやり方だけど主流と言える感じでもないかな……。
WebView コントロールで全部をやってしまえばウェブ技術がかなり使えるので
プログラマの知識バックグラウンドによっては楽ということもあるかも。
2023/08/22(火) 20:29:01.97ID:lpVGvukl0
なんかもう最近はPCでGUIプログラムなんぞ作ること自体が時代遅れみたいな風潮で息苦しいよ
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況