[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 701- 801- 2ch.scのread.cgiへ]
Update time : 04/20 12:41 / Filesize : 255 KB / Number-of Response : 872
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

【初心者歓迎】C/C++室 Ver.104【環境依存OK】



1 名前:デフォルトの名無しさん mailto:sage [2018/12/28(金) 06:04:52.38 ID:ufThBpcD.net]
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/

528 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 00:28:15.76 ID:qDW9CRq2.net]
>>523
> もう少し理解するために調べたのですが、インライン関数は内部リンケージのみを持つものとしてコンパイラに解釈されるらしいですね

どこにそんな嘘書いてあった?

https://timsong-cpp.github.io/cppwp/n4659/dcl.inline#footnote-94
> The inline keyword has no effect on the linkage of a function.

529 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 00:47:02.04 ID:rsRaa5eC.net]
>>528
IBMのサイトに書いてありました・・・
と思って今見返したらこれはIBMの統合開発環境のページなのでその開発環境の仕様かもしれないですね
失礼しました

https://www.ibm.com/support/knowledgecenter/ja/ssw_ibm_i_72/rzarg/inline_linkage.htm
>インライン関数は内部リンケージを持っているものとして処理されるので

530 名前:デフォルトの名無しさん mailto:sage [2019/02/20(水) 09:09:52.38 ID:qDW9CRq2.net]
>>529
「C のみの始まり」〜「C のみの終わり」で囲まれているとおり、それはCの仕様だね。

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

532 名前:デフォルトの名無しさん mailto:sage [2019/02/21(木) 01:44:35.45 ID:HXHB3ZEN.net]
>>531
「それ」が何を指して言ってるのかよくわかんないけど、 inline 関数に対して
インライン展開されてない「実体」を生成するのもしないのもコンパイラの自由。

外部リンケージを持つ関数について複数のコンパイル単位でアドレスを取って
==, != で比較した場合には一致させないといけないので、アドレスを取られた場合には
そういうコード生成をするのが一般的だろうとは思う。

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

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

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

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



537 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 10:39:40.19 ID:Iy1q86mj.net]
今は良いけど、半年後の自分は既に他人だと思わないと

538 名前:デフォルトの名無しさん [2019/02/23(土) 11:45:29.73 ID:+DV3f+Dk.net]
const連鎖まんどくせ

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

540 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 17:32:16.44 ID:7GKXwuwj.net]
入門書の類が、最初のうちは const なしで説明しておいて、
本の後半でおもむろにポインタの引数に const つけることを
載せてたりするせいかもな。
高度な、マニアックな話題みたいな感じで。

文字列(charへのポインタ)を受け取る関数を紹介したら、
すかさず const char* の説明も合わせてすべきって気がする。

const の一般的な価値が分かれば、メンバ関数での func() const {...} の
ありがた味もすぐ飲み込めて const つけまくり派になるでしょ。

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

542 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 21:20:57.14 ID:JpeZVvP/.net]
それは質問なの初心者君?

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

544 名前:デフォルトの名無しさん mailto:sage [2019/02/23(土) 23:48:50.01 ID:Iy1q86mj.net]
「かなり安全な」

ここで思わず笑ってしまったではないか

545 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:00:52.25 ID:qLJosHl4.net]
残念ながらバカはmutable使い出すから無意味。

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



547 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:47:53.06 ID:ORSkBdqU.net]
constっていちいち書くのめんどい

548 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 00:48:50.68 ID:haqs87u6.net]
>>541
何を言ってるのか分かりません

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

550 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 07:21:28.17 ID:kwD2lttR.net]
>>545
mutable使ったらいかんのか

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

552 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:00:44.87 ID:eyx8DEIH.net]
>>547
ちょっとわかるわw
あと3文字くらいが良かった

553 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:02:28.69 ID:zE1f0a65.net]
cnst

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

555 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 09:57:22.91 ID:FGRIaiAP.net]
const char* a = "hoge";
const char* const a = "hoge";

の違いがわからんやつは死ねとよい

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



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

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

559 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 12:08:33.20 ID:6sZPiHms.net]
>>555
ドヤ顔して噛むなよ

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

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

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

563 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 16:47:00.15 ID:RgZ/0jGo.net]
>>560
const に関しては C++ で新規導入された仕様を ANSI C に逆輸入、
みたいな感じじゃなかったっけ?
そのせいか、定数としてconst変数を使えないとか中途半端になってる。
C++ が C の負の遺産を切り捨てるべきだったとしても、
const はその「C の負の遺産」の範疇に含まれないかと。

いずれにせよ、今さら言っても、現に存在する C++ はどうもならんよね。
そういう新プログラミング言語が出ても、それは C++ じゃない別物ってことで。

564 名前:デフォルトの名無しさん [2019/02/24(日) 16:57:30.90 ID:2fcQjxFq.net]
そういうのはDで良いと思う

565 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:18:54.78 ID:NUlc6EOn.net]
とりあえず数値以外はconst参照渡しが基本でおk?

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



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

568 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:40:12.42 ID:qxqTarkR.net]
>>567
それなら同意するけど>>560にそんな意図はないでしょ

569 名前:はちみつ餃子 mailto:sage [2019/02/24(日) 17:43:09.22 ID:gUJTdPsI.net]
>>568
皮肉っぽい言い回しをしてみたかっただけ。

570 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 17:48:01.19 ID:qxqTarkR.net]
いやん

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

572 名前:デフォルトの名無しさん mailto:sage [2019/02/24(日) 18:53:22.05 ID:2wDVhIfR.net]
使わないで済ませる事ができるなら、使わないで置く方がうまく行く

573 名前:デフォルトの名無しさん [2019/02/24(日) 19:20:28.43 ID:iK4D+UQi.net]
>>567

>>571 も書いてるけど、それ何てRust?と思った。

574 名前:はちみつ餃子 mailto:sage [2019/02/25(月) 01:48:46.07 ID:LzC1voP1.net]
負の遺産でも互換性とのトレードオフだしな。
いいことばかりじゃないけど、悪いことばかりでもない。

とりあえず const は付けれるだけ付けとけというのが
ベストプラクティスだと思う。

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

576 名前:はちみつ餃子 mailto:sage [2019/02/25(月) 13:56:12.72 ID:LzC1voP1.net]
>>575
まあそこはもしもの話だから。
最初から const なら文法もそれに
沿ったものになってただろうさ。



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

578 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 18:51:13.68 ID:y5m/9TYH.net]
>>577
ああ、それなかなかいいかも

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

580 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 20:44:41.85 ID:x+rkal0w.net]
引数じゃなく method の const は後悔することがちょいちょいと

class foo {
public:
void method() const;
};

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

582 名前:はちみつ餃子 mailto:sage [2019/02/25(月) 20:56:50.13 ID:LzC1voP1.net]
const が必要なところに付けるって考えるよりは
const では駄目なところでは外すという考え方の方が
安全っぽいという話であって、
適切に使い分けろというのは大前提のことだってことは補足しておく。

const が当たり前だって気持ちになると
変更が必要な個所は自然に局所化されるでしょ。

583 名前:デフォルトの名無しさん mailto:sage [2019/02/25(月) 21:58:02.00 ID:rMTHv0xs.net]
const連鎖くらったらほどほどでいいやと思うようになる

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

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

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



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

588 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 01:02:30.50 ID:Ujo6lghI.net]
>>587
ビットマップ画像を読み込んでブラーをかけてビットマップ画像として出力

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

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

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

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

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

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

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

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



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

598 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 03:33:39.99 ID:belfWXD5.net]
先に他の言語やらんとC++の必要性はわからんと思う

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

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

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

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

603 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 16:05:20.40 ID:5MxkS3P7.net]
>>599
なんで、そんな面倒くさい事をしなきゃならないんだ?

Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる

localhost:8080

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

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

tcpは、というかhttpサーバは難しそうですが頑張ります!

606 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 17:44:16.64 ID:MNG9zBp3.net]
>>602
gcc/clang だと -Wshadow だな。
-Wall -Wextra とは別に指定する必要があるようだ。
細かいことを言えば、同じ型でなくても、名前が隠される場合は警告が出る。

今ネットで調べて確認、これからオイラも使うことにする。



607 名前:デフォルトの名無しさん mailto:sage [2019/02/26(火) 23:22:44.06 ID:8Je4SUY+.net]
同じ意味だけど型が違うときの変数名ってどうされてますか?
いつも困ってます。

例)

float2 fPos( 1.0f, 2.0f );

XMFLOAT2 fPos( fPos.x, fPos.y ); ←当然同じ名前は×

608 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 07:11:30.50 ID:tay7IMIk.net]
>>607
float2でfPosって付けてるならXMFLOAT2ならxPosとかでいいと思うが…

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

610 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:12:35.49 ID: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点です。よろしければ教えてください。

https://qiita.com/marufeuille/items/81f323a52a6fd3bd530c

611 名前:さまよえる蟻人間 mailto:sage [2019/02/27(水) 19:18:47.40 ID:AjY/hWvK.net]
bufはpacketの間違いか? 多分。

612 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:25:41.76 ID:uRVYM9rZ.net]
キャストしてるのはwarning回避じゃないか?

613 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:41:57.94 ID: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 名前:デフォルトの名無しさん mailto:sage [2019/02/27(水) 19:48:31.45 ID: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 mailto:sage [2019/02/28(木) 00:25:33.39 ID:OS/9xoBt.net]
>>608
>>609
ご提案ありがとうございます!
何らかのプリフィクスで識別が妥当そうですね。
ローカル名前空間みたいな概念があると便利そうですが・・・。

local namespace XM
{
  XMFLOAT2 fPos;
}

float2 fPos( 1.0f, 2.0f );

XM::fPos = { fPos.x, fPos.y };

616 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 09:35:29.75 ID:KtBFXYBy.net]
どうせ長ったらしい関数書いてんだろ
それがそもそもの間違い



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

618 名前: mailto:sage [2019/02/28(木) 20:15:42.34 ID:FII1Vkt+.net]
>>587
https://mevius.5ch.net/test/read.cgi/tech/1549160513/
にお題がいっぱい転がっています…

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

620 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 22:46:25.10 ID:UN7NGNSN.net]
そんな解説本あるのかw

621 名前:デフォルトの名無しさん mailto:sage [2019/02/28(木) 23:11:49.78 ID:LM7UlKO7.net]
それはあいつが悪いだろ‥

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

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

624 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 01:51:54.22 ID:ejlMN09K.net]
今何も見ずにラムダ式書ける?

625 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 01:55:24.44 ID:aAd1thXX.net]
有名所のライブラリでラムダ式使ってるの見たことない

626 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 06:22:49.33 ID:TGgsjFNR.net]
『プログラミング言語C++』第4版は電話帳より厚いね。
あれは解説書だよな。1300ページ以上ある。

ちょうど新しい電話帳が届けられたばかり。
田舎住まいだから都市部に比べて電話帳が薄いってこともあるけど。



627 名前:デフォルトの名無しさん mailto:sage [2019/03/01(金) 07:01:09.26 ID:TGgsjFNR.net]
C++は新しい言語仕様が次々に追加されるせいで、
同じ細かな処理をするにも人によって書き方が色々になって、
「同じ言語で同じ処理をしてるはずなのにソースは似ても似つかない」
「自分で書くには便利だけど、他人の書いたプログラムは読み解けない」
てな状況になってるんと違うかな。

わざわざストラウストラップ先生が「言語の全部を知らなくても、
徐々に理解しながら使えばいい」と書いてくれてるけど、
他人のソースを読む際には役に立たないアドバイスだよね。

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






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<255KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef