【初心者歓迎】C/C++室 Ver.104【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.104【環境依存OK】 - 暇つぶし2ch390:デフォルトの名無しさん
19/02/05 06:14:00.98 sYtbTM3p.net
すみません
n秒ごとに関数foo()を繰り返し実行するような、かつ「低負荷な」方法を教えてください。
n秒は、精度はだいたいでよくて、たぶんnは600(つまり10分)程度にしたいと思っています。
windows 10 で、gccで最新の標準C++ とboost C++ が使用可能です
よろしくお願いいたします

391:はちみつ餃子
19/02/05 06:20:20.09 VmiK9YL/.net
>>390
SetTimer API を使って WM_TIMER イベントの発生を待つのが妥当な方法だと思う。
イベントが発生するまでは何もせずに待つだけなので低負荷。

392:389
19/02/05 06:57:10.23 sYtbTM3p.net
>>391
windows API をつかう方法で行ってみます
ありがとうございます。
標準C++ で導入された
thread とchrono を用いて、while (1 )を回すという方法がGoogle検索で 出てきますが、低負荷な方が良いので、windows API で行ってみます。
ありがとうございます。

393:デフォルトの名無しさん
19/02/05 07:12:26.12 kZRbw8C2.net
whileは単なる無限ループじゃなく、スレッドが立ち上がるまで、sleep で CPU を眠らせてるんじゃないの?
whileだけだと、負荷かかるし、sleep一発だと、繰り返し待ちできないから

394:デフォルトの名無しさん
19/02/05 07:23:19.83 kZRbw8C2.net
URLリンク(ja.cppreference.com)
gccは並列STLまだ実装できてないんだな。がかーり
C++2xは後回しでいいから先に実装してもらいたいな
msvcがしらん間にgccを上回るC++17準拠状況になってるんだな
msがかなり頑張ってるのがかなり意外

395:デフォルトの名無しさん
19/02/05 10:24:17.44 Jquzc2Ph.net
趣味グラマーって本職が焼そば職人だっけ

396:デフォルトの名無しさん
19/02/05 10:36:43.43 PCiHKxWL.net
MSが標準をわざと外して潰し合う戦略を取ってたのは遥か昔
今は協調してシェアを取り込んでから独占する戦略がメイン

397:デフォルトの名無しさん
19/02/05 13:32:56.11 HSCecGQW.net
>>395
ブロガーで良くね?

398:デフォルトの名無しさん
19/02/05 18:47:37.04 VoURnPvV.net
スパゲッティーでは?

399:デフォルトの名無しさん
19/02/05 21:03:29.46 6rjCuhxB.net
>>397
URLリンク(cpplover.blogspot.com)

400:デフォルトの名無しさん
19/02/06 08:14:04.23 QvJUH+Yd.net
>>395
Oishii Sru Paの話?

401:デフォルトの名無しさん
19/02/07 11:49:12.65 nCm+DDSJX
【製作中 の wasm(WebAssembly)/MS Windows 共通の Window System】

URLリンク(nowsmartsoft.atwebpages.com)


ひきこもりの L より。

402:デフォルトの名無しさん
19/02/07 12:01:48.93 nCm+DDSJX
>>401
何日か前から5chで公開した(「つもり」だ)けど、Ninja Analyzer によれば、そのリンク先
を訪れたユニークユーザー数は、今のところ「1」。

どうなってるの。

403:デフォルトの名無しさん
19/02/09 10:04:34.12 Js3eMSlM.net
6
だまれ朝鮮人
失せろ

404:デフォルトの名無しさん
19/02/09 13:43:15.52 n731AUSx.net
Class TA{
public:
TB B;
}
Class TB{
・・・
}
Class TA::TA(){ //コンストラクタ
B = new TB;
}
で、TAのデストラクタが走った時点でBも一緒に消えるんですかね。
それともTAのデストラクタで delete B が必要なんですかね。

405:
19/02/09 14:02:51.11 1JWnTnfH.net
>>404
new したのなら delete は必ず書かないといけない
URLリンク(ideone.com)

406:デフォルトの名無しさん
19/02/09 14:24:00.17 6TG0Gkwe.net
必ずというわけではないよ

407:
19/02/09 14:36:03.78 1JWnTnfH.net
>>406
理解はしますが薦める気にはならないのです…

408:デフォルトの名無しさん
19/02/09 15:47:27.40 YAWSonmT.net
>B = new TB;
エラーになるんじゃね?

409:デフォルトの名無しさん
19/02/09 16:20:31.91 NnmcfWng.net
>>408
それぐらいは忖度してやれよ

410:デフォルトの名無しさん
19/02/10 13:20:38.44 MWi64iyD.net
メンバ変数にクラスを持つときはポインタ型にしてコピーコンストラクタを作るべきですか?
それともクラスの実体を持たせても大差ありませんか?

411:デフォルトの名無しさん
19/02/10 13:21:20.82 XMMc9iis.net
クラスと用途による

412:デフォルトの名無しさん
19/02/10 13:40:02.39 Ix0Ul5tp.net
実体で用が足りるならすべて実体でよい
効率云々はまず一通り動くものが出来上がった上でそこが問題になってから考えろ

413:デフォルトの名無しさん
19/02/10 13:41:09.49 MWi64iyD.net
わかりました
ありがとうございます

414:デフォルトの名無しさん
19/02/10 14:15:19.12 0+1G/wKU.net
値型とエンティティを意識して作って下さい
エンティティはスマポで管理、値型は実体を持たせるべきでしょう

415:デフォルトの名無しさん
19/02/10 14:26:23.71 KPch74RC.net
エンティエィって何?
定性的な定義を頼むわ

416:デフォルトの名無しさん
19/02/10 14:30:03.09 0+1G/wKU.net
>>415
インスタンスがアイデンティティを持つならエンティティ

417:
19/02/10 15:14:36.29 nGIVWkyn.net
>>416
実数はエンティティですか?
符号付整数はエンティティですか?

418:デフォルトの名無しさん
19/02/10 15:16:29.18 sKzQuR0e.net
あーやだやだ
こういう宗教じみた設計論語るやつ

419:デフォルトの名無しさん
19/02/10 15:16:40.47 0+1G/wKU.net
>>417
値です

420:デフォルトの名無しさん
19/02/10 15:17:40.51 0+1G/wKU.net
>>418
現実を見据えて追求すると自然と出てくる答えです

421:デフォルトの名無しさん
19/02/10 16:25:18.62 scT3207q.net
親クラスとライフサイクルが同じか数値型なら実体、そうでないならポインタでいいだろ。
動的確保よりコピーやmoveのほうがコストが低い場合とか検討の余地はあるけど、考えすぎると禿げる。

422:デフォルトの名無しさん
19/02/10 16:31:34.44 25jgEgQt.net
>>404
デストラクタは virtual に汁

423:デフォルトの名無しさん
19/02/10 20:26:50.17 EWmLbbO6.net
どうせそこまで最適化も厳密なメモリ管理も必要なプログラムじゃないだろ。

424:デフォルトの名無しさん
19/02/10 21:57:11.00 sKzQuR0e.net
>>420
ほらね、こういう精神論がでてくる

425:デフォルトの名無しさん
19/02/11 01:02:52.04 QKPibkAC.net
組み込み以外に使い道あるんですか?

426:デフォルトの名無しさん
19/02/11 07:24:34.72 KN5ZTrY9.net
OS作ったり、ブラウザ作ったり、3Dバリバリのゲームを作ったり、他の言語向けに機械学習や科技計算等のライブラリを作ったり、いろいろあるよ

427:デフォルトの名無しさん
19/02/11 12:01:51.83 itY+kGJR.net
RubyはC++が嫌いだからCで書かれている

428:デフォルトの名無しさん
19/02/11 12:06:46.94 QKPibkAC.net
>>426
天才達だけに許された言語なのでしょうか?
もっと身近なプロダクトはないんですか?

429:デフォルトの名無しさん
19/02/11 12:32:11.46 PRVQuzHN.net
古い例だとニコニコ動画がC++
まあおかげで開発がスケールせずオワコン化したわけだが

430:デフォルトの名無しさん
19/02/11 12:32:14.48 itY+kGJR.net
the door is open

431:デフォルトの名無しさん
19/02/11 12:43:40.65 MmPS3pUZ.net
>>428
聞いてばっかりじゃなくてお前がどういうものを探しているか書いたら?

432:デフォルトの名無しさん
19/02/11 13:10:19.37 Y0EVtjJ+.net
CADとか画像処理とかビット演算系アルゴリズム(cf.ZDD)なんかは
まだまだ他の言語には負けないね

433:
19/02/11 13:44:01.42 HT+vwAFW.net
>>429
>開発がスケールせずオワコン化した
これってどういう意味ですか?

434:デフォルトの名無しさん
19/02/11 13:51:23.27 awXFg/MG.net
JavaからC++勉強中です
C++の場合、他のクラスのオブジェクトを複数持たせるときは、一般的にどうするんでしょうか
・コンテナにオブジェクトそのものを突っ込む(一番わかりやすいけど、ムーブの定義忘れとかでミスが出そう)
・コンテナにオブジェクトへのポインタを持たせる(コンテナ解放時に、クラスごとに同じようなメモリ解放処理書くのかしら)
・コンテナにポインタをスマートポインタで持たせる
辺りをネットで読ませてもらいましたが、こんな感じで良いんでしょうか?
不勉強な上、他のオブジェクト持つという基本的なことなので、なんかもっと簡単な方法を見落としてる気がしてしまいまして

435:デフォルトの名無しさん
19/02/11 13:54:24.78 QKPibkAC.net
>>434
時と場合によりますので一般的な答えはありません

436:さまよえる蟻人間
19/02/11 14:06:14.14 fD0IDjkv.net
>>434
Javaのオブジェクト参照はC++のポインタに該当する。
C++のオブジェクトは、型を持ったバイト列だと考えていい。
C++で自動変数を宣言すると、スタックにバイト列が割り当てられる。
newやスマポやコンテナを使うと、ポインタによりヒープでメモリーが割り当てられる。
ポインタも型を持ったバイト列。ポインタは配列のように周りのメモリーにアクセスできる。
C++のクラスは構造体に関数群を追加したもの。C++でクラスを継承すると、関数群とバイト列を引き継いだサブクラスになる。

437:デフォルトの名無しさん
19/02/11 14:12:14.41 0TxoCFW6.net
>>434
大体、その3つの通りで、そこに述べられたものの上から優先的に選ぶ。
つまり、普通にメンバ変数にオブジェクトとして宣言するのがC++では
最も効率が良くて伝統的な書き方。それでは問題が生じる場合にオブジェクトの
ポインタとして持たせる。スマートポインタは後になって導入されたもので、
人気があるものではないので無視して良い。
二番目のポインタとして持たせるのは、例えば、今定義している最中の
クラス(自分自身)と同じ型のデータで、子どもや親にあたるデータへ
リンクを作りたいようなときか、または、ある基本クラスを継承した
色々なクラスのオブジェクトを持ちたい場合に用いる。

438:さまよえる蟻人間
19/02/11 14:16:41.10 fD0IDjkv.net
C/C++では、sizeofキーワードを使えば、簡単にvoid以外の型のサイズがコンパイル時に取得できる。Javaではオブジェクトのサイズを簡単に取得することはできない。
C/C++はよくオブジェクトのサイズやバイトの並びを意識してプログラミングする。

439:デフォルトの名無しさん
19/02/11 14:17:25.55 a3vDiVrE.net
結局CのポインタってJavaとかの言語で表すなら何なんだ?

440:さまよえる蟻人間
19/02/11 14:23:20.42 fD0IDjkv.net
なぜなら、例えばスタックに巨大なデータを割り当てると、スタックオーバーフローというエラーが発生するし、
ヒープだって、巨大なデータの割り当ては失敗することがある。
また、構造体を変更すると、構造体のサイズやデータ構造が変化して、互換性の問題が発生することがある。

441:デフォルトの名無しさん
19/02/11 14:24:23.31 awXFg/MG.net
>>437氏他
丁度今、ウェブ上のC++で書かれたCompositeパターンのソースを読ませて頂いてました
正に2番目で実装されてましたが、都度メモリ解放処理書くくらい当たり前なんですね、流石C++です
独学なもんで、こうはっきり言ってもらえると本当にありがたいです、使い分けて行きたいと思います
他の皆様もありがとうございました、勉強になりました

442:さまよえる蟻人間
19/02/11 14:34:10.39 fD0IDjkv.net
>>439
Javaの動的配列はCのポインタに近いが、Javaの配列では危険なアクセスは制限されているし、参照カウントで管理されている点が異なる。
Javaのオブジェクト参照は、参照カウントで管理されており、C++の構造体/クラス型に対するstd::shared_ptrに該当する。

443:さまよえる蟻人間
19/02/11 14:37:16.50 BEdrdhIs.net
しかし、std::shared_ptrはヌルポを指定できるが、Javaはできない。

444:デフォルトの名無しさん
19/02/11 14:49:43.57 0TxoCFW6.net
>>441
C++ は、デストラクタに必ずメモリ解放処理を書いておけば、そんなに
メモリーリークを気にすることはない。多くの場合にはそれで完全に処理できるから。
次のように書くだけで、ほとんどの場合、メモリーリークは起きない:
class CMyClass {
 BYTE *m_pBuf;
 CMyClass() {  // コンストラクタ
   m_pBuf = NULL;  // メモリをまだ未割り当てであることをマークするためにこうしておく
 }
 ~CMyClass() {  // デストラクタ
  if ( m_pBuf != NULL ) {
   delete [] m_pBuf;   // メモリの解放
  }
 }
}

445:デフォルトの名無しさん
19/02/11 14:52:47.12 dGdUrFsa.net
すごく古い書き方だ

446:さまよえる蟻人間
19/02/11 14:54:57.57 BEdrdhIs.net
>>444
ナマポの場合、代入したらまずいよ。例外安全にも問題があるし。

447:デフォルトの名無しさん
19/02/11 14:55:46.62 DnOcmNTU.net
確かに、人に教えるレベルじゃないね

448:デフォルトの名無しさん
19/02/11 14:56:36.09 0TxoCFW6.net
>>444
正しくは、次のようにアクセス制御のための「public :」を書かないといけない。
class CMyClass {
protected :
 BYTE *m_pBuf;   // 高速化のため、自動的には初期化はされないのでコンストラクタで初期化する。
public :
 CMyClass() {  // コンストラクタ
   m_pBuf = NULL;  // メモリをまだ未割り当てであることをマークするためにこうしておく
 }
 ~CMyClass() {  // デストラクタ
  if ( m_pBuf != NULL ) {
   delete [] m_pBuf;   // メモリの解放
  }
 }
}
なお、必要に応じて、コンストラクタの中で、m_pBuf = new BYTE [xxx]; のように書いても良い。
それと、BYTE は、「オブジェクト」ではないので、あなたの書いているような場合には、
BYTE *m_pBuf の部分を CSomeObject m_pObj; のように変えて、m_pObj = new CSomeObject;
のようにする。

449:さまよえる蟻人間
19/02/11 14:58:34.69 BEdrdhIs.net
>>448
ダメだこりゃ。

450:デフォルトの名無しさん
19/02/11 15:03:05.98 MkFOBvt9.net
良い子のみんなは>>444の危険性が理解できるまではスマートポインタを使ってね
おじさんとのお約束だよ

451:デフォルトの名無しさん
19/02/11 15:11:57.93 Qk3j4qw0.net
>>448のデストラクタでnullチェック必要?
nullポインタをdeleteしても問題ないはずだが
二重解放防止にはならんし意味わからん

452:さまよえる蟻人間
19/02/11 15:18:49.80 BEdrdhIs.net
>>451
超独自仕様の組み込み開発とか、メモリー管理がbuggyなプログラムでは意味があるらしい。
例えば解放したメモリーブロックをアクセスするような行儀の悪いプログラムでは意味がある。

453:はちみつ餃子
19/02/11 15:19:34.89 eS7AzULV.net
>>444 >>448
・ 初期化を初期化リストでやらずに代入でやるのは邪悪。
・ delete に NULL を渡した場合には何もしないことが保証されているので、
  無駄にヌルチェックする必要はない。
・ ポインタ型や整数型の値もまたそういう型の「オブジェクト」である。
  (元質問者が Java から入ってきてるから「Java の用語で言うところの」という意味?)

454:デフォルトの名無しさん
19/02/11 15:19:51.73 3tLemvMU.net
初心者なので確認
コンストラクタの中に飛び込む前のメンバの初期化で例外発生したら m_pBuf は中途半端になるから
コンストラクタの中で代入するんじゃなく、メンバ初期化子で初期化しろ
という認識でいいのかしら

455:さまよえる蟻人間
19/02/11 15:29:14.84 BEdrdhIs.net
>>454
「C++ 例外安全」でググれ。ナマポを使わずに、素直に生配列、コンテナ、スマポのどれかを使えば済むこと。マネージされてないナマポは村八分にしろ。

456:デフォルトの名無しさん
19/02/11 15:39:02.97 3tLemvMU.net
なんとなくわかった   ような気がする
生ポそのものはコンストラクタもデストラクタに何ら操作しないから宙ぶらりんこになるのか

457:デフォルトの名無しさん
19/02/11 15:41:57.41 dGdUrFsa.net
ちょっち理解は大変だけど生ポはスマポにドンドン置き換えたい

458:さまよえる蟻人間
19/02/11 15:43:11.94 BEdrdhIs.net
スマポならコピーコンストラクター・代入のややこしさからも解放される。

459:はちみつ餃子
19/02/11 15:52:25.23 eS7AzULV.net
まあまあ。
スマートポインタを活用しろというのはその通りだが、
ポインタ (や例外機構) を理解せずに
思考停止してスマートポインタを使うのはあかんやろ。
ここの元質問者はまだそこを理解しようとしている
ところなんだから、スマートポインタを使わなかった場合にどう書けば良いのか、
きちんと書くと面倒くさすぎるという体験も必要だろ。

460:さまよえる蟻人間
19/02/11 16:16:38.24 fD0IDjkv.net
所有権の管理は人類には早すぎる。
所有権が変動するときは、スマポでOK.

461:さまよえる蟻人間
19/02/11 16:28:46.52 fD0IDjkv.net
こんなときはナマポを使ってもよい:
処理の中で所有権が移動・消滅しない場合。
バイナリーデータやPODを生で扱う場合。
処理系がナマポやトークンやハンドルの入力を要求する場合。

462:デフォルトの名無しさん
19/02/11 16:36:19.07 QKPibkAC.net
生ポはスマポのオーバーヘッドすら許容できないときに使うものです
だから初心者は無理して生ポを使わなくていいです

463:デフォルトの名無しさん
19/02/11 16:59:08.84 V2lM2C5l.net
>>437
スマポは後になって導入されたもので人気がない、なんて意見は一般的ではないので無視して良い

464:デフォルトの名無しさん
19/02/11 18:19:37.85 j549IniP.net
スマポをC#のusing感覚で使ってる

465:デフォルトの名無しさん
19/02/12 13:19:56.52 VqanzRzk.net
エアプwwwwwwwww今は参照カウントじゃねーよw残念だったなクソ蟻wwww

466:デフォルトの名無しさん
19/02/12 13:20:43.00 VqanzRzk.net
それで、Cの生ポってC/C++以外で表現するなら何なんだ?

467:デフォルトの名無しさん
19/02/12 16:02:24.32 VerJGrBE.net
>>466
native int

468:デフォルトの名無しさん
19/02/12 17:27:09.82 VqanzRzk.net
>>467
仮装アドレス的な意味で来るとは思ってなかったwでも本質はそうだよなあ

469:デフォルトの名無しさん
19/02/12 17:29:23.18 t+DTqVP+.net
CALL -151

470:デフォルトの名無しさん
19/02/13 06:16:37.08 2WlGbphz.net
>>466 今の言語は極力「生のポインタ」が見えないようにしてるからなぁ。
オレの乏しい知識で無理矢理ヒネリ出すなら、
「古いBASICの peek, poke のアドレス指定に変数を使った場合」かのう。
型のない単なるアドレスって言うか数値だけど。

471:デフォルトの名無しさん
19/02/13 15:13:52.62 Yg4iFXpY.net
upvar

472:デフォルトの名無しさん
19/02/13 15:46:18.41 SgfrIpbp.net
>>466
BYTE  ptr = アドレス値;
BYTE  MEM[4096 * 1024];  // 4GB のメモリ配列

*ptr  --->  MEM[ptr]  // ptr は MEM[] 配列の添え字

473:デフォルトの名無しさん
19/02/13 15:46:56.07 GHq8zte2.net
訂正:
BYTE  MEM[4096 * 1024 * 1024];  // 4GB のメモリ配列

474:デフォルトの名無しさん
19/02/13 15:48:00.46 GHq8zte2.net
訂正:
Uint32  ptr = アドレス値;

475:デフォルトの名無しさん
19/02/13 18:19:07.37 QnNf1eu6.net
恥の上塗り

476:デフォルトの名無しさん
19/02/13 19:18:53.91 BFnAt9lr.net
intptr_t とか、INTPTRとか。

477:デフォルトの名無しさん
19/02/13 19:41:39.99 D91GFqhb.net
eax

478:デフォルトの名無しさん
19/02/13 22:43:21.58 8CyDgeqf.net
行儀よく バッファなんて 守れやしなかった
夜のサーバ オーバフロー起こしてまわった
*印見て アナルといわれた 早く添え字になりたかった
信じられぬ カーニハンとの 争いの中で
許しあい いったい何 解りあえただろう
うんざりしながら それでも過ごした ひとつだけ解ってたこと
このポインタからの 卒業

479:デフォルトの名無しさん
19/02/14 07:38:16.87 fSoz/vTj.net
まあstatic変数やglobal変数使ってリークしてないとか言い張るバカよりかは
ナマポ使えやとは思う。
それならまだコード修正効くからな。
初心者にスマポ使わせればリークしないコード書かせることができるって考えははっきりいって幻想だわ。

480:デフォルトの名無しさん
19/02/14 22:35:36.88 vW9ukCJU.net
昔研究室の後輩でポインタがわからないから全部グローバル変数でプログラム作ってるって奴がいて、
それはそれである意味すごいなって思ったわ。
マルチメディア系ライブラリを触る必要がある研究室なのだが。
元々組込系が得意な奴だったってのもあると思うけど。

481:デフォルトの名無しさん
19/02/14 22:50:47.58 tlcLfILV.net
COBOLERだったんじゃね

482:デフォルトの名無しさん
19/02/15 00:04:29.72 tnuHGyjk.net
一度切りの使い捨て用途とかなら全然よくね

483:デフォルトの名無しさん
19/02/15 00:36:18.42 kpfA4lgp.net
>>479
スマートポインタを使うとコード修正効かなくなるの?どういうこと?

484:デフォルトの名無しさん
19/02/15 00:46:46.72 TR5VS7Vw.net
mp4boxをちょこっといじったのを作ろうとしたんだけど、
signed int32の計算で -2112000 / 48000 の結果が 89434 になるんですが。
VS2015のx64です。

485:デフォルトの名無しさん
19/02/15 06:57:51.95 OZ8Dcboc.net
>>484 「-2112000 / 48000 の結果が 89434」
その環境を持ってないんで分からないけど、
-2112000 の32bit16進数表現が 0xffdfc600
89434 * 48000 == 4292832000.000 == 0xffdf6b00
両者のビットパターンが一致することと関係ありそうね。
被除数の -2112000 を64bitで表現する際に
符号拡張 0x_ffff_ffff_ffdf_c600 とすべきなのに
ゼロ拡張 0x_0000_0000_ffdf_c600 にしちゃって、
その後の計算は64bit正数でやってる感じかな。

486:デフォルトの名無しさん
19/02/15 07:20:58.81 1DfV94Wg.net
>>483
本人がスマポ理解できてないってオチだろ

487:デフォルトの名無しさん
19/02/15 07:22:53.73 1DfV94Wg.net
>>480
組み込みが得意でポインタがわからない後輩
設定に無理がありすぎw

488:482
19/02/15 07:53:28.61 OZ8Dcboc.net
再び >>484 「-2112000 / 48000 の結果が 89434」 (間違いを訂正)
-2112000 の32bit16進数表現が 0xffdfc600
89434 * 48000 == 4292832000.000 == 0xffdf6b00
ビットパターン一致してないね。桁数多くて見間違えちゃった(テヘペロ)。
-2112000 を32bitで表現すると 0xffdfc600 であり、
これをゼロ拡張した 0x_0000_0000_ffdf_fc600 == 4292855330 を
48000 で割り算して小数部を捨てれば 89434 という答えが出る。
ということなら合ってるかな。

489:
19/02/15 07:57:48.46 8MeM2Ami.net
>>484
コードを URLリンク(ideone.com) に貼っていただけませんか?

490:デフォルトの名無しさん
19/02/15 09:49:31.73 tuwIijw4.net
>>484
どうせ48000がunsignedなんじゃねーの
それにつられて -2112000もunsignedになって4292855296
その結果が薬師美代ちゃん

491:デフォルトの名無しさん
19/02/15 13:45:38.25 TNDmXWGM.net
>>482
自分が何してるか判って使う分には問題無いな
適材適所だ

492:デフォルトの名無しさん
19/02/15 21:13:40.77 kkRd+/gL.net
>>483
>スマートポインタを使うとコード修正効かなくなる
どういう風に読むとそういう理解になるのか。。
まずは日本語の理解が必要だな。

493:デフォルトの名無しさん
19/02/17 07:14:37.91 KxX3tJEE.net
超初歩的な質問になるのですが
scanf関数を使って20個未満の任意の数だけ、数値を配列変数で受け取りたいです
たとえば「2 4 8 9」と入力し、Enterが押されたらそれで確定
num[0]=2
num[1]=4
num[2]=8
num[3]=9
としたいわけです。
どうしたらよいでしょうか?
一応自分で考えたコード(期待通りの動きをしません)を掲載します
for(i=0;i<20;i++){
scanf("%d",&num[i]);
if(num[i]==‘¥n’){
break;
}
}

494:デフォルトの名無しさん
19/02/17 07:30:35.53 a45/WyPQ.net
for(i=0;i<20;i++) if (scanf("%d",&num[i]) != 1) break;

495:デフォルトの名無しさん
19/02/17 09:09:16.12 uZDoAvc4.net
>>493
scanfや標準ライブラリの関数など、参考書とかで普通の使い方はわかると思うけど、細かい仕様をmsdnやmanコマンドで調べるようにするとかなり理解が広がると思うよ。

496:デフォルトの名無しさん
19/02/17 22:37:58.74 O/E0SKNM.net
中途半端なUI使うよりもcsvパーサーを作るかどっかからとってくるかすれば?

497:デフォルトの名無しさん
19/02/18 00:02:29.61 yZfkTbdS.net
autoってコンパイル遅くなりますか?

498:
19/02/18 00:59:53.43 aN2QSVsl.net
>>497
むしろ遅くなる方に振れるでしょうけれど、そんなのどうでもいいのでは?

499:デフォルトの名無しさん
19/02/18 01:22:44.39 c9cLPpQ7.net
autoって変数の型宣言の話だよね?
コンパイルは遅くなるのか
速くしたい時はどうすりゃ良いの?

500:はちみつ餃子
19/02/18 01:27:51.06 ViRlfcsh.net
C++ の auto は右辺と一致させるように推論するだけの単純機構で、
ややこしい演算で推論するわけではないので、
コンパイル速度ではほとんど差はないと思うよ。

501:デフォルトの名無しさん
19/02/18 01:30:04.86 tKsXQ0K5.net
autoはむしろコンパイル速くなるんじゃない?
いちいち型を解決せずとも、既に解決済みの型を右から左へコピーするだけでいいんだから
C++でコンパイルを速くするのは簡単で、単純にソースファイル数とインクルードするヘッダを減らせばいい
C++のコンパイルが遅いのは主にコンパイル単位という時代遅れで極めて非効率なコンパイル戦略に起因しており、実はコードの複雑さ自体はわりとどうでもいい

502:
19/02/18 01:31:11.50 aN2QSVsl.net
>>499
C++を言語として選択した時点で「記述の時間やコンパイル時間を投資して実行時間を稼ぐ」という思想なのでは?コンパイル時間を短くする努力はする気がないと思います

503:
19/02/18 01:32:21.67 aN2QSVsl.net
>>501
>いちいち型を解決せずとも、既に解決済みの型を右から左へコピーするだけ
この記述はコンパイル時を想定しているの?それとも実行時を想定しているの?
はっきりさせたいので念のために確認します

504:デフォルトの名無しさん
19/02/18 05:41:12.34 KTgkm+s5.net
>>493 サーバーの 503 エラーに引っかかって昨日のうちに書けなかったんだが…。
>>494 の方法だと Enter が単純に読み捨てられて scanf() が終了せず
まだ入力をよこせと言ってくるからダメみたいね。
11 22 33 (Enter) だと読み込みが継続、期待通りに動作しない
11 22 33 x (Enter) なら x を解釈する時点で scanf() が 0 を返してループ脱出

先に文字列として1行読み込んで sscanf() と思ったけど…
ndat = sscanf(s, "%d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d %d",
&num[0], &num[1], &num[2], &num[3], &num[4], &num[5], &num[6], &num[7], &num[8], &num[9],
&num[10], &num[11], &num[12], &num[13], &num[14], &num[15], &num[16], &num[17], &num[18], &num[19]);
実際に読めた値の個数は ndat に入る。
これは書くのもメンテナンスするのも嫌だなぁ。
strtol() で1個ずつ数値を拾いつつ、地道にポインタ進める方が良いかも。

505:デフォルトの名無しさん
19/02/18 05:53:27.02 KTgkm+s5.net
>>503 自分は >>501 の人じゃないけど。
ごく簡単な場合ながら、例えば
int val_a = func(para); // func() がint互換の値を返すかチェックが必要
auto val_b = func(para); // func() の返す型そのまんまで val_b を作ればいい
てな具合に考えると auto で定義した方がコンパイル時の手間が少ない、
という考え方にも一理あるかと。

506:デフォルトの名無しさん
19/02/18 08:39:38.41 KTgkm+s5.net
瑣末なことだけど val_a, val_b って変数名は良くなかったね。
変数 variable の例なんだから var_a, var_b だわな。
というか、この場合は a, b で十分だ。

507:デフォルトの名無しさん
19/02/18 10:06:03.91 PGieQvh3.net
まず計測しろよ

508:491
19/02/18 13:24:52.92 fHtoi1qq.net
>>504
ありがとう。ちゃんと確認してなかったわ。
タブに空白に改行はスキップしやがるんでしたか
別案としては fgets() ⇒ sscanf() になるんかな

509:デフォルトの名無しさん
19/02/18 13:29:17.97 fHtoi1qq.net
505の後半は無しで
1文字ずつ切り出して解析してったほうがよさそうね

510:デフォルトの名無しさん
19/02/18 15:27:41.58 bbNHvPxv.net
コンパイル時間にリンク時間は含まれますか?

511:デフォルトの名無しさん
19/02/18 15:28:58.14 bbNHvPxv.net
>>504
scanf は禁止
>>508 が正しい

512:デフォルトの名無しさん
19/02/18 15:34:26.17 c9cLPpQ7.net
人間の様な邪悪なものからの入力でscanfは使うなと、ばっちゃは言ってた

513:
19/02/18 20:54:12.82 aN2QSVsl.net
>>505
>func() の返す型そのまんまで val_b を作ればいい
この発想は実行時なのでは?
>てな具合に考えると auto で定義した方がコンパイル時の手間が少ない、
実行時の発想をコンパイル時に適用していいのでしょうか?

514:
19/02/18 20:54:41.05 aN2QSVsl.net
>>507
コンパイル時間を計測するのですか?…

515:
19/02/18 20:57:23.82 aN2QSVsl.net
>>512
賛成です、そういうのは1ラインを秘術を尽くして何とか読み込み、後で sscanf() とかを使うべき

516:デフォルトの名無しさん
19/02/18 21:15:24.03 JRPNr6+t.net
>>515
今回の例(>>493) のように可能な限り %d で抜き出して打ち切るとなると sscanf 単発では面倒
なんとか行単位でバッファに詰めた後
連続空白などでトークンに区切ってそのトークン単位で sscanf をぶんまわすような
ほのかな中途半端感が

517:デフォルトの名無しさん
19/02/18 21:20:31.62 etvvcICH.net
>>513
別に実行時の発想じゃないでしょ
型を書けばコンパイラはその型名に対応する型を解決しなければならないし、
型変換の要否や可否のチェックも必要

518:
19/02/18 23:19:20.43 aN2QSVsl.net
>>517
>型変換の要否や可否のチェック
これは10中8, 9 コンパイル時にすることなのでは?

519:デフォルトの名無しさん
19/02/18 23:37:20.44 Q29xkQ9H.net
>>518
初めからずっとコンパイル時間の話をしている。お前さんだけ噛み合ってないから、もう黙っててくれ。

520:デフォルトの名無しさん
19/02/19 15:32:09.41 Hz70ZqtS.net
C++です
インクルードガードがあっても関数の定義がヘッダに書かれていればヘッダが複数回読み込まれていた場合リンク時に多重インクルードでエラーが出る
ここまではわかるのですが、同じことをクラス関数で実験した結果エラーになりませんでした
具体的にはヘッダのクラス内に関数定義を書いて複数のファイルからインクルードしました
これはどういうことなのでしょうか?

521:デフォルトの名無しさん
19/02/19 16:00:36.20 uP1odnYQ.net
>>520
クラス定義の中に書かれたメンバ関数の定義は
自動的にインライン関数になる(関数の実体の定義ではない)
この場合は、複数の場所にメンバ関数の実体が作られるわけじゃない、
という説明でどうかな。

522:
19/02/19 17:19:54.69 BVj1SDNF.net
>>519
そもそも「実行時」「コンパイル時」の区別がついていないのでは、コンパイル時間の話なんかできないのでは?
だから「実行時」「コンパイル時」どちらを適用するかに執着しているだけです

523:デフォルトの名無しさん
19/02/19 17:23:21.85 Hz70ZqtS.net
>>521
なるほど
クラス内に定義を書くとインライン関数になって普通の関数としては扱われないんですね
もう少し理解するために調べたのですが、インライン関数は内部リンケージのみを持つものとしてコンパイラに解釈されるらしいですね
だからコンパイラはファイル間での関数の重複を調べようとしない
そしてインクルードによって複数のファイルで同じものを読み込んだとしてもエラーにはならないと・・・
理解です
勉強になりました
ありがとうございました

524:502
19/02/19 17:39:36.16 uP1odnYQ.net
失礼、なぜか >>513 を見逃してて(黙殺するような意図はまったくなかった)。
C++ は関数を宣言・定義するときに返り値型を書くから
auto で受けてもコンパイル時に曖昧さは生じないと考えたんだけど。
実行時まで返り値の型が決まらない関数って作れるんだっけ?
これは純粋に質問、教えを乞いたい。
あんまり高度な話だと振り落とされるかも知れないけど。

525:デフォルトの名無しさん
19/02/19 17:48:52.81 h1wI7nx1.net
型推論が実行時に行われるとかトンチキこいてるやつが一人騒いでるだけ

526:デフォルトの名無しさん
19/02/19 18:43:18.16 +3biNeIC.net
>>524
おそらく君の書いた「func()の返す型~」をqz某が勝手に勘違いしているだけだからスルーしていいよ。
初心者が必ずしも正確な用語を使わないことくらい想像つくだろうし、文脈からして普通ならそんな勘違いはしないはずなのだが。

527:はちみつ餃子
19/02/20 00:20:40.27 C98K3aY7.net
>>524
出来ない。
強いて言えば C++17 からは std::any があるけれど、
これはこれで実行時に型が決まるわけではなくて
コンパイル時に std::any 型であることは確定する。

528:デフォルトの名無しさん
19/02/20 00:28:15.76 qDW9CRq2.net
>>523
> もう少し理解するために調べたのですが、インライン関数は内部リンケージのみを持つものとしてコンパイラに解釈されるらしいですね
どこにそんな嘘書いてあった?
URLリンク(timsong-cpp.github.io)
> The inline keyword has no effect on the linkage of a function.

529:デフォルトの名無しさん
19/02/20 00:47:02.04 rsRaa5eC.net
>>528
IBMのサイトに書いてありました・・・
と思って今見返したらこれはIBMの統合開発環境のページなのでその開発環境の仕様かもしれないですね
失礼しました
URLリンク(www.ibm.com)
>インライン関数は内部リンケージを持っているものとして処理されるので

530:デフォルトの名無しさん
19/02/20 09:09:52.38 qDW9CRq2.net
>>529
「C のみの始まり」~「C のみの終わり」で囲まれているとおり、それはCの仕様だね。

531:
19/02/20 19:50:21.82 P8vN2pc3.net
>>528
それは inline キーワードで束縛された関数は、inline 展開される多数の実体と、外部リンケージによって外部からコールできるものとで別の実体をコンパイラは作成する、ってことですか
まあ inline しまくって無駄にバイナリーを増やすくらいだったら、ついでに1 個の外部リンケージで呼べる実体を追加したって、いろいろな面で大差がない、とはいえますね

532:デフォルトの名無しさん
19/02/21 01:44:35.45 HXHB3ZEN.net
>>531
「それ」が何を指して言ってるのかよくわかんないけど、 inline 関数に対して
インライン展開されてない「実体」を生成するのもしないのもコンパイラの自由。
外部リンケージを持つ関数について複数のコンパイル単位でアドレスを取って
==, != で比較した場合には一致させないといけないので、アドレスを取られた場合には
そういうコード生成をするのが一般的だろうとは思う。

533:デフォルトの名無しさん
19/02/21 14:52:33.25 68lFGCx0t
主にc++でJSON editor作ってみた mac専用だけど
URLリンク(www.quite-funny.com)

534:デフォルトの名無しさん
19/02/22 22:57:05.70 LZ/mWRas.net
引数や関数にはconstつけられるところは全部つけるべきですか?

535:デフォルトの名無しさん
19/02/23 00:51:14.65 CdF18mGW.net
つけて問題ないならつけるべきだけど、まあ実際は面倒くさくなければという程度…

536:デフォルトの名無しさん
19/02/23 10:37:02.21 6erMuDJl.net
>>534
内部で書き換えないポインタや参照の引数には必ずconstをつけるべき。より自己文書化されるし、付けてないと使う側の手間が増える。>>535は元javaプログラマ

537:デフォルトの名無しさん
19/02/23 10:39:40.19 Iy1q86mj.net
今は良いけど、半年後の自分は既に他人だと思わないと

538:デフォルトの名無しさん
19/02/23 11:45:29.73 +DV3f+Dk.net
const連鎖まんどくせ

539:デフォルトの名無しさん
19/02/23 12:40:33.73 aRr2CtyI.net
530みたいな質問する奴はそもそもconst気にする前に関数が長すぎたり
参照と実値渡しの違いもわかってないと思われるのでその辺をしっかりやった方が良い。

540:デフォルトの名無しさん
19/02/23 17:32:16.44 7GKXwuwj.net
入門書の類が、最初のうちは const なしで説明しておいて、
本の後半でおもむろにポインタの引数に const つけることを
載せてたりするせいかもな。
高度な、マニアックな話題みたいな感じで。
文字列(charへのポインタ)を受け取る関数を紹介したら、
すかさず const char* の説明も合わせてすべきって気がする。
const の一般的な価値が分かれば、メンバ関数での func() const {...} の
ありがた味もすぐ飲み込めて const つけまくり派になるでしょ。

541:デフォルトの名無しさん
19/02/23 21:02:55.45 kvfLWeS8.net
戻り値を const char* してても、
char* const してなければさほど意味がない。

542:デフォルトの名無しさん
19/02/23 21:20:57.14 JpeZVvP/.net
それは質問なの初心者君?

543:デフォルトの名無しさん
19/02/23 23:45:27.99 Z+wYSHT9.net
クソミソみたいなjavaのconstと違ってC++のconstは
コードの安全性を高めるのに必須といっていいぐらいのキーワード
とりあえず片っぱしから全部const付けて、どう頑張ってもここは
constはずさないと動くコードにできないよな・・ていうぐらいの
時だけはずす。このぐらいの気構えでコードを書けば、かなり安全な
コードになってる。他のやつが書きかえちゃダメなものをいじろうと
しても、強引なキャストでもしない限りどうやってもコンパイルが
通らなくなる。強引なキャストしてでも無理矢理強姦してくる強姦魔は
そもそも犯罪者気質なのでそんなやつに仕事をやらせてる時点で間違い

544:デフォルトの名無しさん
19/02/23 23:48:50.01 Iy1q86mj.net
「かなり安全な」
ここで思わず笑ってしまったではないか

545:デフォルトの名無しさん
19/02/24 00:00:52.25 qLJosHl4.net
残念ながらバカはmutable使い出すから無意味。

546:デフォルトの名無しさん
19/02/24 00:06:41.22 2wDVhIfR.net
俺は書換られたりはしない たぶんしないと思う
しないんじゃないかな ま、ちょっと覚悟はしておけ

547:デフォルトの名無しさん
19/02/24 00:47:53.06 ORSkBdqU.net
constっていちいち書くのめんどい

548:デフォルトの名無しさん
19/02/24 00:48:50.68 haqs87u6.net
>>541
何を言ってるのか分かりません

549:デフォルトの名無しさん
19/02/24 01:15:50.47 is7scwjD.net
いやまてまて・・このスレの99%はネタでできてるけど
そこ分からないのはダメだぞ
まさに初心者向けの話題ではある

550:デフォルトの名無しさん
19/02/24 07:21:28.17 kwD2lttR.net
>>545
mutable使ったらいかんのか

551:デフォルトの名無しさん
19/02/24 08:50:14.25 FFCpIhtq.net
こいつ能力低いなと思う奴のソースを見ると、
constなんて全く付いていない場合が多い

552:デフォルトの名無しさん
19/02/24 09:00:44.87 eyx8DEIH.net
>>547
ちょっとわかるわw
あと3文字くらいが良かった

553:デフォルトの名無しさん
19/02/24 09:02:28.69 zE1f0a65.net
cnst

554:デフォルトの名無しさん
19/02/24 09:40:01.37 4ommn3XM.net
constはキーボード入力の観点からはそんなに苦じゃない
stdとかarrayが割りと入力しづらい
左右均等に割り振られてると楽な感じ

555:デフォルトの名無しさん
19/02/24 09:57:22.91 FGRIaiAP.net
const char* a = "hoge";
const char* const a = "hoge";
の違いがわからんやつは死ねとよい

556:デフォルトの名無しさん
19/02/24 10:22:22.64 qLJosHl4.net
そんな違いを意識しないと読めないコード書く方がバカだと思う。

557:デフォルトの名無しさん
19/02/24 10:24:20.55 eyx8DEIH.net
(そんな初歩中の初歩でマウンティングドヤ顔して大丈夫っすか先輩)

558:デフォルトの名無しさん
19/02/24 10:37:36.70 haqs87u6.net
>>549
>>548のこと言ってるの?
>>541は、ポインタの指し先だけでなく、戻り値を格納する変数自体を定数にしなければさほど意味がないっていう主張だと理解したけど、合ってる?
ローカル変数を定数化したければ呼び出し元が勝手にやればいいし、戻り値をconst char*にする重要性に比べたらそれをする必要性なんてごく僅かで"さほど意味がない"なんてとても言えないと思うけど

559:デフォルトの名無しさん
19/02/24 12:08:33.20 6sZPiHms.net
>>555
ドヤ顔して噛むなよ

560:デフォルトの名無しさん
19/02/24 12:15:09.98 sIV9Z0cV.net
C++ってC言語の負の遺産を引き継いだ言語だろ?
constは廃止すべき

561:デフォルトの名無しさん
19/02/24 15:05:59.28 uFOuUY9d.net
constみたいな糞どうでもいい些末なことより
配列のサイズとオーバーフローの管理を強化するべきだったんだよ
互換性捨てなきゃならんが

562:デフォルトの名無しさん
19/02/24 15:35:26.16 2tRfk65D.net
>>561
そこはCの負の遺産を引き継いだのではなく、可能な限り実行時オーバーヘッドを小さくする実装手段を提供するというCの基本スタンスを継承しただけだろう。それが負の遺産というなら他の言語の方が適切なんだからそれを選択すればいいよ。
C++を使いたく、ある程度の実行時オーバーヘッドが許容できるときはstd::vectorという選択肢があるけど、それじゃダメなのか?

563:デフォルトの名無しさん
19/02/24 16:47:00.15 RgZ/0jGo.net
>>560
const に関しては C++ で新規導入された仕様を ANSI C に逆輸入、
みたいな感じじゃなかったっけ?
そのせいか、定数としてconst変数を使えないとか中途半端になってる。
C++ が C の負の遺産を切り捨てるべきだったとしても、
const はその「C の負の遺産」の範疇に含まれないかと。
いずれにせよ、今さら言っても、現に存在する C++ はどうもならんよね。
そういう新プログラミング言語が出ても、それは C++ じゃない別物ってことで。

564:デフォルトの名無しさん
19/02/24 16:57:30.90 2fcQjxFq.net
そういうのはDで良いと思う

565:デフォルトの名無しさん
19/02/24 17:18:54.78 NUlc6EOn.net
とりあえず数値以外はconst参照渡しが基本でおk?

566:デフォルトの名無しさん
19/02/24 17:34:26.40 qxqTarkR.net
>>561
at()使え。
>>560
constが負の遺産とか頭おかしい。
ドキュメントにこの変数は内部で変更しませんとか書くよりよっぽど楽だろ

567:はちみつ餃子
19/02/24 17:36:09.20 gUJTdPsI.net
>>566
負の遺産だよ。
const キーワードを廃止して
デフォルトの挙動を const に出来れば
どれほど良いことか。
という意味で。

568:デフォルトの名無しさん
19/02/24 17:40:12.42 qxqTarkR.net
>>567
それなら同意するけど>>560にそんな意図はないでしょ

569:はちみつ餃子
19/02/24 17:43:09.22 gUJTdPsI.net
>>568
皮肉っぽい言い回しをしてみたかっただけ。

570:デフォルトの名無しさん
19/02/24 17:48:01.19 qxqTarkR.net
いやん

571:デフォルトの名無しさん
19/02/24 18:48:30.19 qLJosHl4.net
そこまで挙動を変えるなら別言語でやれば良いし、実際rustとか他の言語としてあるだろ。

572:デフォルトの名無しさん
19/02/24 18:53:22.05 2wDVhIfR.net
使わないで済ませる事ができるなら、使わないで置く方がうまく行く

573:デフォルトの名無しさん
19/02/24 19:20:28.43 iK4D+UQi.net
>>567
>>571 も書いてるけど、それ何てRust?と思った。

574:はちみつ餃子
19/02/25 01:48:46.07 LzC1voP1.net
負の遺産でも互換性とのトレードオフだしな。
いいことばかりじゃないけど、悪いことばかりでもない。
とりあえず const は付けれるだけ付けとけというのが
ベストプラクティスだと思う。

575:デフォルトの名無しさん
19/02/25 12:52:11.08 y5m/9TYH.net
>>567
引数だけなら同意してもいいけど変数はどうするんだ?
for(variable int i = 0; i < 10; i++){
とかはあまり書きたくないぞ

576:はちみつ餃子
19/02/25 13:56:12.72 LzC1voP1.net
>>575
まあそこはもしもの話だから。
最初から const なら文法もそれに
沿ったものになってただろうさ。

577:デフォルトの名無しさん
19/02/25 17:39:50.14 ubojwQhV.net
確かに、関数内で作ったローカル変数だけデフォルト変更可能、
他所から持ちこんだ、ポインタの先や参照、グローバル変数へのアクセスは
基本的に読み出しのみ許可で、明示した場合だけ変更できる、なら
「勝手に書き換えたのは誰だ!?」ってバグは減りそうだね。

578:デフォルトの名無しさん
19/02/25 18:51:13.68 y5m/9TYH.net
>>577
ああ、それなかなかいいかも

579:デフォルトの名無しさん
19/02/25 20:42:12.40 lqvZQt+c.net
そうそう、だから普通にC++書いてる人は
とりあえず引数に全部 const つけるでしょ
それはそういうことだよ

580:デフォルトの名無しさん
19/02/25 20:44:41.85 x+rkal0w.net
引数じゃなく method の const は後悔することがちょいちょいと
class foo {
public:
void method() const;
};

581:デフォルトの名無しさん
19/02/25 20:50:25.72 1EOktSCH.net
constつけときゃいいってのもなんか胡散臭い印象しかないな。
そんなことよりも変更や生成を行う場所、タイミングを局所化するってのが本質だと思うが。

582:はちみつ餃子
19/02/25 20:56:50.13 LzC1voP1.net
const が必要なところに付けるって考えるよりは
const では駄目なところでは外すという考え方の方が
安全っぽいという話であって、
適切に使い分けろというのは大前提のことだってことは補足しておく。
const が当たり前だって気持ちになると
変更が必要な個所は自然に局所化されるでしょ。

583:デフォルトの名無しさん
19/02/25 21:58:02.00 rMTHv0xs.net
const連鎖くらったらほどほどでいいやと思うようになる

584:デフォルトの名無しさん
19/02/25 22:14:33.44 1EOktSCH.net
なんというかもう修正が一切されないコードしか想定してない印象を受ける。

585:デフォルトの名無しさん
19/02/25 22:37:43.55 rMTHv0xs.net
やりすぎオブジェクト指向といっしょで
事故起こりにくいとこでこだわっても変更に弱くなるだけ

586:デフォルトの名無しさん
19/02/25 22:51:58.14 ki6l711j.net
複雑怪奇で理解不能にしておくと、
変な改造されないで済む

587:デフォルトの名無しさん
19/02/26 00:51:25.18 wcHiR3Ib.net
初心者で申し訳ないんですが、c/c++を学ぶため何か作りたいのですが、cで作る意味のあるいいお題はないでしょうか。JavaやC♯、rubyは一通りかける感じですがcはmallocなど知ってはいても使ったことはないレベルです。よろしくお願いします!

588:デフォルトの名無しさん
19/02/26 01:02:30.50 Ujo6lghI.net
>>587
ビットマップ画像を読み込んでブラーをかけてビットマップ画像として出力

589:はちみつ餃子
19/02/26 01:30:28.38 azIRgqwp.net
>>587
いきなり「実務的な」プログラムを書くのはオススメしないよ。
C/C++ には歴史的経緯によってクソな落とし穴と「未定義」がたくさんあるので、
たとえ期待通りに動いたとしても正しくないプログラムであることは多い。
初心者向けのしょうもない (他の言語でやる入門と大差ないような) 題材で小さなプログラムを書いて
ブログとか Qiita とかに書いておけばベテランがよってたかって指摘してくれるさ。
そういうので基本的な落とし穴くらいは理解してから進んだ方が良いと思う。

590:デフォルトの名無しさん
19/02/26 01:35:07.18 F6jD76wH.net
HDDの中を検索するプログラムとか、整理するプログラムとか
こういうのがあったら便利だなっていう物を考えて作ってみる
途中分からなくなったら、ここに相談に来ると良い
親切な人が教えてくれる、かもしれない
あてにはしないこと

591:デフォルトの名無しさん
19/02/26 01:49:53.01 2prSgTvN.net
おっさんらジイさんらの世代だと
「こういうのあったら便利だよな」と思って作りはじめるパターンは有効だったけど
今はそういうの探したらほとんどあるからある意味不幸だよな
しかも自分で作ってたらとてもここまで作ってるヒマないっていうぐらい高機能なのが多いし

592:デフォルトの名無しさん
19/02/26 01:50:17.99 wcHiR3Ib.net
>>588
>>589
>>590
ありがとうすごく参考になりました。デスクトップランチャーとかほしいと思って作るならWPFだし、Cで実用的なほしい物ってむつかしいんですよね。初心者向けの小さなプログラムは上記のブラーとかでしょうか?Cで書く意味がある題材ってわからなくて。。。

593:デフォルトの名無しさん
19/02/26 01:59:04.98 H+xdnOpD.net
>>592
そもそも自分がC/C++を身につける意味があるかというとこらから見直した方がいいのでは?
直ちに必要な訳ではないが将来的に身に付けたいというなら、先に他の人が言っていたようにいきなり実用的なプログラムから入るより練習問題レベルの小品をコツコツ作っていった方がいいと思う。

594:はちみつ餃子
19/02/26 02:00:19.43 azIRgqwp.net
どうしても自分が欲しくて既存のものがないってケースでも、
既存のものをバッチファイルで繋げればできるって程度のものだったりするもんな。
そういう意味じゃ、日常ではスクリプト言語の方が使うことが多いとは思う。
俺が一番最近に書いた C のプログラムもスクリプト言語の拡張パッケージだし。

595:デフォルトの名無しさん
19/02/26 02:19:19.20 F6jD76wH.net
>>592
例えば容量の大きなHDDだと、同じファイルが複数場所にあったりするじゃない?
そういうのを見つけて、チェックした後削除すれば容量節約という実利もあるよ

596:はちみつ餃子
19/02/26 02:22:08.89 azIRgqwp.net
>>592
C/C++ で書く意味ということに最初は拘らなくてよいと思う。
こだわらなくてもプログラムの構成の仕方、書き方には確実に違いがあるから、
むしろ比較しながら学んだ方がいいかもしれない。

597:デフォルトの名無しさん
19/02/26 02:40:55.07 OTQ63qDn.net
C/C++使う必要性がわからないならやらないのが正解
今だにこんなクソ言語使ってるのはそれしか選択肢がないから
あるいは物好きな言語マニアか

598:デフォルトの名無しさん
19/02/26 03:33:39.99 belfWXD5.net
先に他の言語やらんとC++の必要性はわからんと思う

599:588
19/02/26 08:48:58.01 +14u2RP+.net
こんなにレスもらえると思いませんでした、他の言語スレや板だともっと殺伐としてます。。。ありがとうございます。
低レイヤを高速で処理できるのが魅力だと思うので最終的には任意のパケットを送受信できるデーモンを作りたい。ので、>>595のいう同名ファイル検索デーモンから始めようと思います。

600:デフォルトの名無しさん
19/02/26 09:06:06.17 OTQ63qDn.net
ならechoサーバーから入ってhttpサーバーという定番ソケットプログラミングコースもおすすめ
まぁでもその検索デーモンとやらでファイルの扱い勉強してからでいいだろうな
高速化に興味あるならC/C++の標準ライブラリでなくOSのnativeのapiを積極的に使うのもいい
ファイルならメモリマップドファイルを使ったり(ファイル名調べるだけなら不要だけど)
他には検索アルゴリズムに凝る方向とかね

601:デフォルトの名無しさん
19/02/26 11:48:20.70 9FjD9aLm.net
>>599
同じファイルというのをどう判定するかだな
ファイル名なのかハッシュ(中身)なのか

602:デフォルトの名無しさん
19/02/26 14:41:46.79 8+7ktUtN.net
globalに宣言されてる変数と同じ型同じ名前で
関数内にlocalに宣言されたものがあるとき
警告出してくれるオプションって何だっけ

603:デフォルトの名無しさん
19/02/26 16:05:20.40 5MxkS3P7.net
>>599
なんで、そんな面倒くさい事をしなきゃならないんだ?
Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する
ruby -run -e httpd . -p 8080
そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる
URLリンク(localhost:8080)

604:デフォルトの名無しさん
19/02/26 16:39:31.27 2RZ4BMiv.net
>>603
お前は相手の意図を理解する気がまったくなく、人とのコミュニケーションができないことをさっさと理解して、巣にかえって閉じ籠っていてくれ。
ここはお前に用がある奴は一人もいない。

605:588
19/02/26 17:33:10.46 +14u2RP+.net
みなさんありがとう
今日は会社で暇だったのでコピペベースながらUDPで任意のメッセージ送受信出来るようになった
ヘッダでincludeする構造体って宣言済みのクラスみたいな感じで使えることを理解しました。(udphdrを使わずにsendしたからか、送れたけどudpチェックサムは自動で計算されなかった)
tcpは、というかhttpサーバは難しそうですが頑張ります!

606:デフォルトの名無しさん
19/02/26 17:44:16.64 MNG9zBp3.net
>>602
gcc/clang だと -Wshadow だな。
-Wall -Wextra とは別に指定する必要があるようだ。
細かいことを言えば、同じ型でなくても、名前が隠される場合は警告が出る。
今ネットで調べて確認、これからオイラも使うことにする。

607:デフォルトの名無しさん
19/02/26 23:22:44.06 8Je4SUY+.net
同じ意味だけど型が違うときの変数名ってどうされてますか?
いつも困ってます。
例)
float2 fPos( 1.0f, 2.0f );
XMFLOAT2 fPos( fPos.x, fPos.y ); ←当然同じ名前は×

608:デフォルトの名無しさん
19/02/27 07:11:30.50 tay7IMIk.net
>>607
float2でfPosって付けてるならXMFLOAT2ならxPosとかでいいと思うが…

609:デフォルトの名無しさん
19/02/27 07:53:03.71 3Jl+ieqT.net
>>607
よくシステムハンガリアンは悪と言われるけど、この例のように同じ内容で型名の違いに意味がある場合は、型名に関するプリフィックスをつければいいんでない?
とあるライブラリに渡す境界部分ならそのライブラリ名に関するプリフィックスとか。

610:デフォルトの名無しさん
19/02/27 19:12:35.49 8imVoWCJ.net
初心者ですみません、こんなコードをみたのですが2点わかりません。
char packet[1500];
memset(buf, 0, sizeof(buf));
ether_header *eh;
eh = (struct ether_header *)packet;
たぶん、1500byteのメモリを確保して0埋め、ether_header構造体のポインタを宣言してpacketのアドレスを渡す、としたいのだと思います。
分からないのは0埋め対象が宣言されていない変数bufであること、packetのアドレスを渡すのにわざわざether_header型のポインタにキャストしている2点です。よろしければ教えてください。
URLリンク(qiita.com)

611:さまよえる蟻人間
19/02/27 19:18:47.40 AjY/hWvK.net
bufはpacketの間違いか? 多分。

612:デフォルトの名無しさん
19/02/27 19:25:41.76 uRVYM9rZ.net
キャストしてるのはwarning回避じゃないか?

613:デフォルトの名無しさん
19/02/27 19:41:57.94 vHAcjSp1.net
>>610 の引用元を見るとコード片だから、実際にはコンパイルしてないんだな。
char packet[1500];
memset(buf, 0, sizeof(buf));
は、packet と buf が同じもので、正しくは
char packet[1500];
memset(packet, 0, sizeof(packet));
なんだと思う。最初は両方とも buf と書いてあったけど
「もっと自ら語る変数名にしよう」と packet に変えたはいいが、
memset() の方では直し忘れた、というお話かと。

(struct ether_header *) のキャストは、コンパイラの警告対策だな。
…って言うか、これキャストしないでも警告だけで通るのね。

614:デフォルトの名無しさん
19/02/27 19:48:31.45 cPR259KO.net
やってきたパケットのうち 頭のEthernet Header にフォーカスしてる意図でのキャストかな?
最終的には char [1500] で受け取ったパケットの配分を(パディング無しで)
 struct TCPpacket {
  Ethernet_Header eth;
  IP_Header iph;
  TCP_Header tcph;
  char* TCP_payload[]; /* 末尾可変サイズ */
 };
に配分したいんだろうけど、手を抜くなら union にしそうだわ
union Packet {
struct TCPpacket tcp;
char* packet[1500];
};

615:603
19/02/28 00:25:33.39 OS/9xoBt.net
>>608
>>609
ご提案ありがとうございます!
何らかのプリフィクスで識別が妥当そうですね。
ローカル名前空間みたいな概念があると便利そうですが・・・。
local namespace XM
{
  XMFLOAT2 fPos;
}
float2 fPos( 1.0f, 2.0f );
XM::fPos = { fPos.x, fPos.y };

616:デフォルトの名無しさん
19/02/28 09:35:29.75 KtBFXYBy.net
どうせ長ったらしい関数書いてんだろ
それがそもそもの間違い

617:デフォルトの名無しさん
19/02/28 12:25:31.13 o9FaNCnF.net
>>611
>>612
>>613
ありがとう、cがとんでもなく難しい言語かと誤解するところだった。

618:
19/02/28 20:15:42.34 FII1Vkt+.net
>>587
スレリンク(tech板)
にお題がいっぱい転がっています…

619:デフォルトの名無しさん
19/02/28 22:42:25.23 chn/XevV.net
いやーCは簡単な言語だけどC++はとんでもなく難しい言語だと思うぞ
解説本が電話帳より分厚いなんてな自然言語超えてる

620:デフォルトの名無しさん
19/02/28 22:46:25.10 UN7NGNSN.net
そんな解説本あるのかw

621:デフォルトの名無しさん
19/02/28 23:11:49.78 LM7UlKO7.net
それはあいつが悪いだろ‥

622:デフォルトの名無しさん
19/03/01 00:09:02.27 TIzWjpCx.net
しかも、言語仕様の改訂が3年ごとと早すぎて、
邦訳解説本はもちろん、原書でもリリースがおいつかず、
仕様改訂を繰り返すたびについてこれないユーザーをふるい落とす恐るべき言語
仕様改訂の世代を重ねるごとに中国以上の人口減少率でユーザー数が減少する既に終わった少子化言語ww

623:デフォルトの名無しさん
19/03/01 01:01:16.39 SPEgyt6t.net
なんか皆C++はむずかしいむずかしいっていうが、そんなむずかしいか?
俺的には今時のECMAScriptと各種フレームワークの使い方のほうがよほどむずかしい。
2、3年もすると何だかイノベーションがどうのこうのいってまるっきり別物のコンセプトのがでてくるし・・。
C++なんて基本概念はもう何十年もかわらんだろ。あとはその都度必要なstlとかの機能覚えればいいだけ。
楽なもんだよ。

624:デフォルトの名無しさん
19/03/01 01:51:54.22 ejlMN09K.net
今何も見ずにラムダ式書ける?

625:デフォルトの名無しさん
19/03/01 01:55:24.44 aAd1thXX.net
有名所のライブラリでラムダ式使ってるの見たことない

626:デフォルトの名無しさん
19/03/01 06:22:49.33 TGgsjFNR.net
『プログラミング言語C++』第4版は電話帳より厚いね。
あれは解説書だよな。1300ページ以上ある。
ちょうど新しい電話帳が届けられたばかり。
田舎住まいだから都市部に比べて電話帳が薄いってこともあるけど。

627:デフォルトの名無しさん
19/03/01 07:01:09.26 TGgsjFNR.net
C++は新しい言語仕様が次々に追加されるせいで、
同じ細かな処理をするにも人によって書き方が色々になって、
「同じ言語で同じ処理をしてるはずなのにソースは似ても似つかない」
「自分で書くには便利だけど、他人の書いたプログラムは読み解けない」
てな状況になってるんと違うかな。
わざわざストラウストラップ先生が「言語の全部を知らなくても、
徐々に理解しながら使えばいい」と書いてくれてるけど、
他人のソースを読む際には役に立たないアドバイスだよね。

628:デフォルトの名無しさん
19/03/01 13:03:30.11 ozM8zBQ9.net
>>619
CもC++も仕様は簡単
ライブラリやアルゴリズム考えるのが面倒で生産性が低いだけ
それを難しいと勘違いしてるだけ

629:デフォルトの名無しさん
19/03/01 13:21:26.51 5w/5u0Tx.net
こういうc++の危険さをまったく認識できてないやつが一番困る
std::forwardの意義を誰にでもわかるように説明してみろよ

630:デフォルトの名無しさん
19/03/01 15:52:20.02 3z2kkMi4.net
C++11以降とそれ以前で違い過ぎるのが問題では?

631:はちみつ餃子
19/03/01 16:02:10.84 Vq7maKYR.net
>>627
「徐々に理解しながら」は、 C を既に知っている人を明らかに想定していて、
今では C がそんなに支配的でもないという状況を思うと適切な動線とは言えないという意味でも
あまり役に立たなくなってきていると思う。
ただ、追加された機能を見ると、
新しい書き方の方が間違い難くて綺麗で一貫していることが多いので、
肥大化するから追加するのをやめろとも言い難いんだよな……。

632:デフォルトの名無しさん
19/03/01 16:17:07.89 yZJ4Zkhu.net
皆、ドワンゴ江添亮の本を読んでいないから、C++ の恐ろしさがわからないのだろう
詳細を突っつくと、無限にややこしいものが出てくるw
だから江添でさえ、詳細は省略しますって書いてあるw
>>614
1バイトずつ、check sum を計算するような場合は、そういうように、union にするのが定番

633:デフォルトの名無しさん
19/03/01 17:25:35.13 tC4m5Wn4.net
●ワンゴ倒産の危機わろすω

634:588
19/03/01 17:56:26.55 VPz6Y2H0.net
udpパケットを送れるようにはなったのですが、wiresharkで確認するとudpフレームのchecksumが未定義となっていました。。。
そこで1からやりなおしたいのですが、ソケットはrawで開くべきなのでしょうか。いまはudpなのでdgramで開いてsockaddr_inのインスタンスをつかってsendtoしています。

635:デフォルトの名無しさん
19/03/01 18:11:15.15 a4IFMTFx.net
checksum計算して値入れてから送れよ

636:デフォルトの名無しさん
19/03/01 18:18:10.83 6LDVvTwi.net
enumについて教えてください
enum { ..\..\VAL1, VAL2 };
このような書き方でコンパイルが通る環境はありますか?
case ..\..\VAL1:
というのも許される環境はありますか?
c/c++

637:デフォルトの名無しさん
19/03/01 18:57:53.08 p6eROYwf.net
よくわからんが、識別子の定義を変えたいということか?

638:632
19/03/01 19:04:29.12 6LDVvTwi.net
どこかで見た覚えがあります

639:588
19/03/01 19:14:27.70 VPz6Y2H0.net
>>635
調べた方が足りませんでした、NICのTCP offloadingという機能が有効になっていたせいで、NICより手前でキャプチャするとunverifiedとなっているようです。大変失礼しました。

640:デフォルトの名無しさん
19/03/01 19:23:28.99 HVxvwZsK.net
>>623
>今時のECMAScript
いや、ハードウェアに固定されたバイナリーですらなく、ソフトウェア上で決められた決め事になんら意味を見出せないのですが、それでも javascript とかに熱意を抱けるコツがあったら教えてください

641:デフォルトの名無しさん
19/03/01 19:25:06.34 HVxvwZsK.net
>>633
いいかげんにニコ動をなんとかしてほしいです、昔も重かったけれども今も重い、これはなんとかならないのですか?

642:デフォルトの名無しさん
19/03/01 19:27:08.91 YTopxKYT.net
>>640
>>623の書き込みのどの部分を読んでその質問がでてきたんだ?なんかバグってね?

643:デフォルトの名無しさん
19/03/01 21:35:36.90 Y8fj+4tW.net
引数のmove受け一つとってもrustの3倍くらい難しくなってるわな。
シンタックスが特殊だし、オーバーロードはされるわ、特殊な右辺値に対してのみ動作するとか
根本からおかしい。

644:デフォルトの名無しさん
19/03/02 09:08:32.90 NYNVQHNm.net
物作った事の無い人の重箱の隅つつき+詳細未記載本なんて
時間の無駄だというのが良くわかった。
石田晴久の通信プログラムとか技術書展の方がマシ

645:デフォルトの名無しさん
19/03/02 11:46:55.44 jZcAiOx4.net
ソース書くときに気を付けるのはとにかく引き継ぎしないといけなくなったときに楽になるようにって点かな。
上から読み下していったときにわかりやすければなんでもいいと思ってる。

646:デフォルトの名無しさん
19/03/02 12:38:56.25 +L4gK20K.net
構造体で例えば
struct POINT{
int x, y;
};
があるとき
struct POINT p = {1, 2};
と定義と代入を同時に出来ますが
一度代入したものを後から書き換えるとき
p = {3, 4};
と書くとエラーになるみたいで
p.x = 3, p.y = 4;
と書かないといけないのが面倒です
先生なんとかなりませんか?

647:デフォルトの名無しさん
19/03/02 12:45:48.83 +L4gK20K.net
ああできた
p = (struct POINT){3, 4};
これでいけました

648:デフォルトの名無しさん
19/03/02 13:27:28.31 NYNVQHNm.net
構造体一括代入はANSI以降の機能だからOS/9とかCP/M68K
のC言語では当然のように動かない

649:デフォルトの名無しさん
19/03/02 13:49:52.82 +L4gK20K.net
C++だと
p = POINT(3, 4);
もいけるかな

650:デフォルトの名無しさん
19/03/02 13:50:54.37 +L4gK20K.net
>>648
たぶんそうだったと思います
ありがとうございます

651:はちみつ餃子
19/03/02 14:04:36.97 tMatklv8.net
>>649
C++11 以降なら p = {3, 4}; でもいけるよ。

652:デフォルトの名無しさん
19/03/02 14:07:27.41 kDivPjLV.net
片山さんは何で改名したんですか?

653:デフォルトの名無しさん
19/03/02 16:04:24.12 uz1yhwTy.net
C の p = (struct POINT){3, 4}; は、構造体の一括代入に違いないけど、
(struct POINT){3, 4} の部分が「複合リテラル」compound literal だから
使えるのは C99 以降だね。

654:デフォルトの名無しさん
19/03/02 16:10:37.25 EmfZa2jP.net
>>647
理由が"面倒"だったのに、文字数増えてるよねそれ

655:
19/03/02 16:12:43.27 Ud+LwFnR.net
>>653
これは、C++ に合わせてほしかったな、と思うのです

656:デフォルトの名無しさん
19/03/02 21:57:47.90 nqwTLRnH.net
>>654
要素数によるやろ

657:デフォルトの名無しさん
19/03/03 10:43:47.19 lzyzpNmU.net
C++の規格で使いたいならC++使えで

658:デフォルトの名無しさん
19/03/03 10:52:31.28 BbxzBxVK.net
c++の規格って言ってもその辺、c++のいつの規格だよって話になるんじゃないの?

659:デフォルトの名無しさん
19/03/03 12:23:44.49 eB5he6fi.net
>>633
会社の売り上げに貢献せず、警察を提訴するような
キチガイ高卒社員が資産食い潰してるんじゃね?wwww

660:デフォルトの名無しさん
19/03/03 12:30:17.98 eB5he6fi.net
>>626
すでに3版でも電話帳より厚いよ
まともに読む気になるのは2版までだな。
熱意あるうちはともかく、ふと我に返ると俺何してんだろって。
そんで、言語覚えただけじゃプログラムてかけないしな。

661:デフォルトの名無しさん
19/03/03 12:36:20.23 0vjeZZiI.net
C++でまともなWebサービス作れるエンジニアなんて相当単価高そう
もうオワコン動画の便所掃除やりたがる奴なんていないだろうし

662:デフォルトの名無しさん
19/03/03 14:17:56.07 ilhG1tLW.net
オワンゴとは良く言ったものだな

663:はちみつ餃子
19/03/03 14:31:57.32 XzFmXWmd.net
サービスを書くのに C++ の比率は高くないかもしれんが、
サービスを支えるインフラには C++ を使うことだってあるだろう。

664:デフォルトの名無しさん
19/03/03 15:36:52.66 WlpYxc7g.net
普通はJavaじゃなかろうか。

665:デフォルトの名無しさん
19/03/03 15:58:13.68 E4UxtVYi.net
Javaは糞

666:デフォルトの名無しさん
19/03/03 16:24:07.50 D2G4oQ9F.net
副業解禁で激変する若者世代とマネージャー世代のキャリア観
URLリンク(www.businessinsider.jp)
フリーランスの職種20個の仕事内容と平均年収をわかりやすく解説
URLリンク(www.proof0309.com)
時給1万円のバイトも。会社員向きのプチ副業を、“バイト芸人”が教える
URLリンク(headlines.yahoo.co.jp)
副業が「会社にバレる人」と「バレない人」の大差
URLリンク(headlines.yahoo.co.jp)
正社員の10%以上が副業 中には過重労働で体調崩す人も
URLリンク(headlines.yahoo.co.jp)
「副業で年2000万円稼ぐ男」に学ぶキャリア戦略
URLリンク(headlines.yahoo.co.jp)
加速する「副業社会」正社員の4割が「副業したい」 気になる収入はどれくらい?
URLリンク(headlines.yahoo.co.jp)
おすすめ副業22選を現役フリーランスが解説【在宅も可能】
URLリンク(www.proof0309.com)
会社を辞めてフリーランスで働きたいあなたが知っておくべき10のこと
URLリンク(www.businessinsider.jp)
フリーランスと会社員、働き方の根本的な差 広がる「雇用されない働き方」の課題とは何か
URLリンク(toyokeizai.net)
フリーランス人口は増える!今後は仕事もプロジェクト単位になる!?
URLリンク(freelance.mts-career.com)

667:デフォルトの名無しさん
19/03/03 16:40:10.01 QDmbu/k4.net
言語を使う側なのに、大声でJavaは嫌い()

668:デフォルトの名無しさん
19/03/03 23:12:33.70 PvgSI+1g.net
>>633
焼そば屋?

669:デフォルトの名無しさん
19/03/04 04:52:56.59 DAN4+o0x.net
「困った」と
「助けたい」をマッチングする
新たな出会い系アプリか?

670:デフォルトの名無しさん
19/03/04 21:58:39.97 jKyydNU9.net
最近はスノボにご熱心。

671:デフォルトの名無しさん
19/03/05 04:05:49.01 /9uzsfIc.net
まあJavaは糞これは間違いない
Java使うぐらいならC#使うほうが10倍まし

672:デフォルトの名無しさん
19/03/05 06:49:23.03 O5wD/kWC.net
そんなことあるわけない
100倍は違う

673:デフォルトの名無しさん
19/03/05 06:58:59.78 kisxcMe6.net
Javaはコボラーと同じく湿った猫のような臭いがします

674:デフォルトの名無しさん
19/03/05 14:00:13.11 CkJINn0N.net
Java並に大規模な開発事例ってC++にはあるの?

675:デフォルトの名無しさん
19/03/05 15:25:41.23 fIhIM0AX.net
Windows

676:デフォルトの名無しさん
19/03/05 17:12:45.41 YmAHbq9k.net
>>674
人月商売をやってるだけで大規模()とは言わない
Linuxカーネルほど大規模なのはJavaではない

677:デフォルトの名無しさん
19/03/05 17:33:37.15 /9vlYliD.net
LinuxカーネルってCじゃないのか?

678:デフォルトの名無しさん
19/03/05 17:42:59.75 zQd5qKqX.net
javaって大規模なの?

679:デフォルトの名無しさん
19/03/05 18:51:08.44 t42KPL8W.net
unreal engineとかクッソ大規模に見えるけどどう?

680:デフォルトの名無しさん
19/03/05 19:03:00.43 fIhIM0AX.net
工数でいえばそんなもんクフ王のピラミッドには遠く及ばないだろう

681:デフォルトの名無しさん
19/03/05 19:03:04.57 VOhJ9aa0.net
そもそもjreの基幹部分とかc++だろ

682:デフォルトの名無しさん
19/03/05 19:33:34.31 5rQQuIbo.net
クフ王のピラミッドがなんか関係あるのか?

683:デフォルトの名無しさん
19/03/05 19:57:12.64 RSECco33.net
甘い
甘いなぁ
人月換算だと同じだよ
死者数すらも一致してる

684:デフォルトの名無しさん
19/03/05 22:23:27.02 kisxcMe6.net
20年前で70万ステップぐらいでビルドに1Hぐらいだったなあ

685:デフォルトの名無しさん
19/03/06 00:39:47.70 oR6mPeK7.net
むしろ>>674が思う大規模なjavaプロジェクトを知りたい

686:デフォルトの名無しさん
19/03/06 00:47:13.50 URVwFrjm.net
人数かけて、webページの遷移ごとに別人が開発して、似たような処理をするコードが100倍くらいに膨れ上がって収集つかないようなのが大規模なんじゃね

687:デフォルトの名無しさん
19/03/06 02:24:32.10 bd8igJ/M.net
そう言われると、それまさにコボルだなw

688:デフォルトの名無しさん
19/03/06 09:21:38.79 Bk9kaTOY.net
コボル島ってどっかになかったっけ

689:デフォルトの名無しさん
19/03/06 09:50:15.63 mg6kC0Yg.net
c++じゃなくてcでnamespaceって使えますか?あるいはnamespace相当の機能ってどうすれば実現出来ますか?

690:デフォルトの名無しさん
19/03/06 09:53:13.16 mg6kC0Yg.net
重力波を検出するのに世界中の電子望遠鏡を接続してリアルタイムに通信してるようだけど
ああいうシステムのコードって何で書かれてるの? FORTRAN ?

691:デフォルトの名無しさん
19/03/06 10:10:00.89 TjQtzcPT.net
>>689
cでは使えない
ほぼ上位互換だからc++使えばいいじゃん

692:デフォルトの名無しさん
19/03/06 11:25:59.41 1+PBsWw4.net
>>690
マジレスすると、ああいうのはファイルに落として時々バッチ処理してるだけ
言語はだいたいFortranかC++が多いだろうね

693:デフォルトの名無しさん
19/03/06 13:12:20.46 +Sk++sfs.net
C++だけは絶対にないな

694:はちみつ餃子
19/03/06 13:15:53.62 7/fqDaVy.net
そうか。

695:デフォルトの名無しさん
19/03/06 23:36:07.84 rIL6SiiZ.net
std::chronoにnanoseconds取り扱う型があるけど
これってwindowsでもナノ秒の精度ちゃんと取り扱えるの?

696:デフォルトの名無しさん
19/03/06 23:39:51.80 NglcYyrq.net
c++11以降はあれ明らかに生産性下がってんだろ。。
誰か本当のことを言ってやれよ。。

697:デフォルトの名無しさん
19/03/06 23:41:05.32 ARyk7IvZ.net
構造化束縛はありがたい

698:デフォルトの名無しさん
19/03/06 23:42:11.68 TjQtzcPT.net
>>695
自分で試してみたら?

699:デフォルトの名無しさん
19/03/06 23:52:49.64 07omsi5c.net
>>695
表現できるだけ
計測できるとは言っていない

700:デフォルトの名無しさん
19/03/07 04:25:32.55 hEEon6In.net
じっさいにやったらわかるが、結局 Windows API の持ってる精度までしかでない
あたりまえっちゃーあたりまえだが

701:デフォルトの名無しさん
19/03/07 05:42:28.93 mVKClUMz.net
>>698
試そうと思ったらどう試すのがいいんだ?

702:デフォルトの名無しさん
19/03/07 06:28:12.40 beHWBAJY.net
短時間、というか連続で何度も時刻の値を入手して、
値の下の方の桁がかならずゼロ並びになってるとか、
時刻同士の差を取って、ある値より小さな数が出ないことから、
解像度の見当を付けるくらいかな。
もっと良いやり方を知ってる人は教えてください。

703:デフォルトの名無しさん
19/03/07 09:17:09.23 0XBNAuOg.net
差をとってその偏差を見ればいいんでは
高解像度タイマーならたぶんcpuのクロック程度の解像度じゃないの
パフォーマンス測定に普通使うし
個人的にはchrono使わずにosのapiかコンパイラの組み込み関数使う
そっちの方が信頼できるし、chronoは型がガチガチすぎて面倒くさい

704:デフォルトの名無しさん
19/03/07 09:44:34.06 MJ46GSxE.net
アナログ出力してオシロで確認

705:デフォルトの名無しさん
19/03/07 19:42:23.39 41TL6wBf.net
std::vectorの最初の要素数は
std::vectro<foo> bar(12);
みたいにコンストラクタで指定できますが、同様に
std::vector<std::vectro<foo>> bar
のように入れ子になったvectorの両方の要素数をコンストラクタで指定する方法はありますか?

706:デフォルトの名無しさん
19/03/07 20:10:03.40 rioBJ/QG.net
結構難しいと思うがね。
最近のCPUはターボブーストいうてサボるし、命令順序入れ替えるし、キャッシュの乗り方でnano秒程度は簡単にズレるだろうし。

707:デフォルトの名無しさん
19/03/07 20:45:12.44 xMxnKQAI.net
>>705
std::vector<std::vector<foo>> a(100, std::vector<foo>(200));

708:デフォルトの名無しさん
19/03/07 20:50:20.24 pnI3L7PU.net
>>706
最近のは対策入ってる

709:デフォルトの名無しさん
19/03/07 22:54:09.91 qMT9Q04c.net
>>707
ありがとござます!

710:デフォルトの名無しさん
19/03/09 07:43:53.39 L5yO1DTL.net
Cで書かれたライブラリから来た構造体にスマポをあてる方法はありますか?

711:デフォルトの名無しさん
19/03/09 09:00:25.13 jz9xUaFa.net
どうなんだろ?
普通に考えたらデストラクタでfreeを呼べばいいから、それ用のライブラリがありそうな気はするけど。

712:デフォルトの名無しさん
19/03/09 10:46:03.96 ABNsWlsO.net
>>710
スマポ弄ってアロケートだけしないようにすればいいんじゃね?

713:デフォルトの名無しさん
19/03/09 11:36:20.07 4ewQpv+T.net
「来た」というのが構造体へのポインタをfree責任ごと渡されたという意味ならカスタムデリータだろうな。

714:706
19/03/09 12:16:02.29 L5yO1DTL.net
ありがとうございます
カスタムデリータは知りませんでした
Cで書かれたライブラリにmallocしたポインタを返してくる関数があって生ポいやだなあと思っていたところでした

715:デフォルトの名無しさん
19/03/09 14:06:24.90 YAm1zwse.net
最近スマポ使えスマポ使えってうるさい割にはカスタムデリータ指定出来ることも知らなかったりするんだな
自分が使ってるもののリファレンスすら読んでない奴が安全性とかどの口で言ってるんだろう

716:デフォルトの名無しさん
19/03/09 15:07:55.58 23Hi4jvz.net
わかってない奴ほど、声がデガイんだよ。

717:デフォルトの名無しさん
19/03/09 17:13:56.74 kfZA3URW.net
codecvt_utf8
codecvt_utf16
codecvt_utf8_utf16
こいつらの糞加減に

718:デフォルトの名無しさん
19/03/09 17:33:22.12 anJ4ej+i.net
最近カスタムデリータ知ったから嬉しがってる奴がいるなw

719:デフォルトの名無しさん
19/03/09 17:49:56.48 23Hi4jvz.net
>>715
すいませんね、リファレンスなんかそっちのけで、ネット情報だけで、プログラム組んでます。

720:デフォルトの名無しさん
19/03/09 19:59:53.92 YAm1zwse.net
>>718
図星だったか、すまんな
というかマウント取るための屁理屈考えてる暇あったら手動かした方がいいよ

721:デフォルトの名無しさん
19/03/09 20:10:27.73 eJu7ZZw8.net
図星しとか意味分からん
ひょっとして>>715 disってるのか? w

722:デフォルトの名無しさん
19/03/09 20:14:07.94 9vZTtl18.net
最近図星って言葉を覚えたので使いたいんだろう
察してやれ

723:デフォルトの名無しさん
19/03/09 20:21:16.84 YAm1zwse.net
>>715で言ったことが図星だったか?という意味なんだが
アホが多いインターネッツですね

724:デフォルトの名無しさん
19/03/09 20:32:45.58 kU0Uws1z.net
今度はインターネッツという言葉を覚えたのか
どんどん賢くなっていくな

725:デフォルトの名無しさん
19/03/09 20:39:00.33 ABNsWlsO.net
カスタムデリータごときでよくそこまでドヤれるもんだなw

726:デフォルトの名無しさん
19/03/09 20:46:58.79 YAm1zwse.net
それ俺に言ってんの?w

727:デフォルトの名無しさん
19/03/09 21:23:16.03 jx9iLAiD.net
そもそもSTLの基幹部分とかJavaだろ。

728:デフォルトの名無しさん
19/03/09 21:36:18.70 jz9xUaFa.net
実際c++やるやつのほとんどの動機がマウントとりたい以上のものではない。

729:デフォルトの名無しさん
19/03/09 22:31:55.52 u5Pk3KZw.net
> 俺に言ってんの?
意識しまくりすぎだろw

730:デフォルトの名無しさん
19/03/09 22:41:21.04 Tm/Y9JxW.net
大学四年かけてC++と機械学習学べば年収1000万とか本気で言ってる奴らだからな()

731:デフォルトの名無しさん
19/03/11 22:26:31.27 QlHozVZM.net
相談なのですが
テキスト形式のライセンスファイルへのファイルパスを渡さないと使用できないライブラリA
そのライブラリAを使用するライブラリB
私が作成しているのはライブラリBです。お客さんに使ってもらうものなんですが、「ライセンスファイルをセットで提供して適切な場所に置いて使ってもらう」という手間を省きたくてライセンスファイルをライブラリBに埋め込めないかと思案しています。
とりあえずライセンスファイルの中身をソースにベタ書きし、実行時に一時ファイルとして作成しライブラリAにそのパスを渡すことで上手くいっているのですが、もっとスマートな方法はないでしょうか?
ファイルパスを渡さないといけないので無理ですかね…

732:デフォルトの名無しさん
19/03/11 22:57:10.81 9rO3q8tQ.net
納入時にファイル一つなんか?
実体なんやねん

733:デフォルトの名無しさん
19/03/11 23:06:05.03 zGphoT2G.net
ライブラリAが要求するのは
ファイルシステムに認知されるファイルの形式でないといけない
だから中間ファイルに書き出して、そのファイルパスを渡すしかない

つかライセンスを埋め込んだ場合何がしかの事情で
ライセンス変更の必要が迫られた場合ライブラリBを構築しなおすことになるんだが
そういう管理でいいのけ?


次ページ
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch