次スレを立てる時は本文の1行目に以下を追加して下さい。
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part137 (正しくはpart138)
http://mevius.5ch.net/test/read.cgi/tech/1535353320/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
■長いソースを貼るときはここへ。■
http://codepad.org/
https://ideone.com/
[C++ FAQ]
https://isocpp.org/wiki/faq/
http://www.bohyoh.com/CandCPP/FAQ/ (日本語)
----- テンプレ ここまで -----
VIPQ2_EXTDAT: default:vvvvv:1000:512:----: EXT was configured
C++相談室 part139
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん (ワッチョイ f65b-zn+7)
2018/10/06(土) 00:59:48.54ID:CdYUXXMG02デフォルトの名無しさん (ワッチョイ ba12-A6IM)
2018/10/06(土) 01:18:47.18ID:evMRo/Iv0 で
_sって何
_sって何
3デフォルトの名無しさん (ワッチョイ 6ee3-BkfR)
2018/10/06(土) 01:29:10.07ID:JjdhAE/r0 >>2
あれは複数形のsのつもりだった。
個人的には、コードにおいては、aaa に対する複数形の s は、aaas と書かずに
aaa_s と書いた方が分かりやすいと感じることがあるので。
ただ、配列の場合は、複数形の _s を付けて、リンクリストの場合は、
list または、List を付けるようにしている。
今回の場合も、リストなら List と書いたほうがいいかもしれない。
あれは複数形のsのつもりだった。
個人的には、コードにおいては、aaa に対する複数形の s は、aaas と書かずに
aaa_s と書いた方が分かりやすいと感じることがあるので。
ただ、配列の場合は、複数形の _s を付けて、リンクリストの場合は、
list または、List を付けるようにしている。
今回の場合も、リストなら List と書いたほうがいいかもしれない。
4デフォルトの名無しさん (ワッチョイ 6ee3-BkfR)
2018/10/06(土) 01:31:32.02ID:JjdhAE/r05デフォルトの名無しさん (ワッチョイ e66f-vBoO)
2018/10/06(土) 01:52:36.08ID:OsNJaukk0 意味で考えたら自動的に型は合うでしょ。
意味だけ考えりゃ済むことを二重にするのが思考の節約ってのがわからん。
一重で済めばそれに越したことは無い。
グダグダの設計をなんとかするのにはシステムハンガリアンも有用と思うけど、
まともな設計が出来てれば要らんだろ。
「英雄のいない時代は不幸だが、英雄を必要とする時代はもっと不幸だ」
意味だけ考えりゃ済むことを二重にするのが思考の節約ってのがわからん。
一重で済めばそれに越したことは無い。
グダグダの設計をなんとかするのにはシステムハンガリアンも有用と思うけど、
まともな設計が出来てれば要らんだろ。
「英雄のいない時代は不幸だが、英雄を必要とする時代はもっと不幸だ」
6デフォルトの名無しさん (ワッチョイ 6ee3-BkfR)
2018/10/06(土) 02:00:06.62ID:JjdhAE/r0 >>5
ところで、あなたは巨大なプログラムを作った経験ある?
ところで、あなたは巨大なプログラムを作った経験ある?
7デフォルトの名無しさん (ワッチョイ e66f-vBoO)
2018/10/06(土) 02:07:35.21ID:OsNJaukk08デフォルトの名無しさん (ワッチョイ 6ee3-BkfR)
2018/10/06(土) 02:10:13.19ID:JjdhAE/r0 >>5
たとえば、ポインタの場合の先頭に「p」が付いているだけでも、立派な「意味」になっている。
このような一般法則を用いないで、ポインタであるとう意味まで含めた変数名を
付けることは、基本的に不可能。
また、たとえば、名前の入った0終端文字列へのポインタを「pszName」という変数名を
付けているのは、かなり適切に意味を表していると思う。
「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。
また、長いテキストの中の一部だけに着目した文字列の場合は、そのどちらでもないから
「psz」の接頭辞はつけない。
これにより、発見しにくいバグも減る。
たとえば、ポインタの場合の先頭に「p」が付いているだけでも、立派な「意味」になっている。
このような一般法則を用いないで、ポインタであるとう意味まで含めた変数名を
付けることは、基本的に不可能。
また、たとえば、名前の入った0終端文字列へのポインタを「pszName」という変数名を
付けているのは、かなり適切に意味を表していると思う。
「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。
また、長いテキストの中の一部だけに着目した文字列の場合は、そのどちらでもないから
「psz」の接頭辞はつけない。
これにより、発見しにくいバグも減る。
9デフォルトの名無しさん (ワッチョイ 6ee3-BkfR)
2018/10/06(土) 02:17:56.90ID:JjdhAE/r0 >>5
決められたフォーマットでファイルにデータを書き込むような場合、コード中、
メモリ中のデータのポインタと、これから書き込む fseek するためのファイルポインタ、
サイズなどが「対」または「コンビ」のようになって存在することがある。
そのとき、接頭の、fpos、p、size、len などでそれらが区別できることはとても有りがたい。
その場合、
fposData1 = pData1 - pTop;
のようなパターンが現れるだろう。
それに加えて、同じではない微妙に違った関数化が難しいようなパターンが現れくることがある。
そういうような場合に、ハンガリアン記法は、とても重宝する。
正しいコードが、記法からだけでほとんど機械的に分かってしまう事も多い。
決められたフォーマットでファイルにデータを書き込むような場合、コード中、
メモリ中のデータのポインタと、これから書き込む fseek するためのファイルポインタ、
サイズなどが「対」または「コンビ」のようになって存在することがある。
そのとき、接頭の、fpos、p、size、len などでそれらが区別できることはとても有りがたい。
その場合、
fposData1 = pData1 - pTop;
のようなパターンが現れるだろう。
それに加えて、同じではない微妙に違った関数化が難しいようなパターンが現れくることがある。
そういうような場合に、ハンガリアン記法は、とても重宝する。
正しいコードが、記法からだけでほとんど機械的に分かってしまう事も多い。
10デフォルトの名無しさん (ワッチョイ df7f-vBoO)
2018/10/06(土) 02:20:37.42ID:mx6yHsyJ0 テンプレートじゃ使えないしもはやC時代の遺物でしかないわな
現代じゃ害悪
現代じゃ害悪
11デフォルトの名無しさん (ワッチョイ e66f-vBoO)
2018/10/06(土) 02:26:47.17ID:OsNJaukk0 >>8
思考のレイヤが違うな。
やりたいことの意味をプログラムに落とし込んだ結果としてなんらかの型に収まるという考えでやってるので、
型が意味だと言われたら本末転倒な感じがする。
まあ型中心の方がわかりやすいってのならそれはそれでいいよ。
思考のレイヤが違うな。
やりたいことの意味をプログラムに落とし込んだ結果としてなんらかの型に収まるという考えでやってるので、
型が意味だと言われたら本末転倒な感じがする。
まあ型中心の方がわかりやすいってのならそれはそれでいいよ。
12デフォルトの名無しさん (ワッチョイ 6ee3-BkfR)
2018/10/06(土) 02:27:05.24ID:JjdhAE/r0 >>10
自分の場合は、自作テンプレートの中でも使ってる。たとえば、
TYPE m_data;
TYPE *m_pPrev;
TYPE *m_pNext;
xxx( TYPE *pPos ) {
・・・
}
などのように。
自分の場合は、自作テンプレートの中でも使ってる。たとえば、
TYPE m_data;
TYPE *m_pPrev;
TYPE *m_pNext;
xxx( TYPE *pPos ) {
・・・
}
などのように。
13デフォルトの名無しさん (ワッチョイ 6ee3-BkfR)
2018/10/06(土) 02:31:46.61ID:JjdhAE/r0 >>11
たとえば、floatをdoubleに変更したことはあるが、
BYTE 型を int 型に変えたりすることはまず無い。
16BIT時代から32BIT時代へ移行するような場合は、
変更したことはあるが、機械的に置換すればいいというわけではなかった。
32BIT時代から64BIT時代への以降においても、機械的に置換して
済むものではないと思う。
たとえば、floatをdoubleに変更したことはあるが、
BYTE 型を int 型に変えたりすることはまず無い。
16BIT時代から32BIT時代へ移行するような場合は、
変更したことはあるが、機械的に置換すればいいというわけではなかった。
32BIT時代から64BIT時代への以降においても、機械的に置換して
済むものではないと思う。
2018/10/06(土) 03:24:51.76
目で追っただけでカメラが視線を検知してどの変数を見てるか特定して型を表示してくれ
できれば脳に直接語りかけてくれ
できれば脳に直接語りかけてくれ
15デフォルトの名無しさん (ワッチョイ 8ad7-vBoO)
2018/10/06(土) 07:00:37.46ID:Oq2kvGiO0 ワード幅が変わってもWORDの意味を変えることはできなかったね
16デフォルトの名無しさん (ワッチョイ 8ad7-vBoO)
2018/10/06(土) 07:10:10.75ID:Oq2kvGiO0 > 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。
型が知りたいときに宣言を見ないアホを救う必要あるか?
F12を押せば一発だろうが
型が知りたいときに宣言を見ないアホを救う必要あるか?
F12を押せば一発だろうが
17デフォルトの名無しさん (アウアウウー Sa30-z023)
2018/10/06(土) 07:26:40.45ID:hM5EPMW3a どのエディタを想定してる?
18デフォルトの名無しさん (ワッチョイ aab3-GL8C)
2018/10/06(土) 07:56:58.40ID:Gg92+MKo0 >>8
> 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。
今どき0終端文字列なんてAPIに渡したりする時など以外には使わんだろ
ほとんどない例外事項に対処するためによく使うケースの効率落とすのはダメプログラマーにありがち
> 「name」だけだと CString 型と 0終端文字列なのかの区別も付かない。
今どき0終端文字列なんてAPIに渡したりする時など以外には使わんだろ
ほとんどない例外事項に対処するためによく使うケースの効率落とすのはダメプログラマーにありがち
19デフォルトの名無しさん (ワッチョイ 8107-5OJW)
2018/10/06(土) 08:20:03.66ID:u69e3u+l0 >>18
?
?
20デフォルトの名無しさん (ワンミングク MM32-y1q8)
2018/10/06(土) 08:22:41.80ID:hgnllvmvM >>18
?
?
21デフォルトの名無しさん (ワッチョイ 26bd-PkCJ)
2018/10/06(土) 08:36:03.28ID:d9G2ZJ03022デフォルトの名無しさん (オイコラミネオ MMb6-37Ge)
2018/10/06(土) 08:37:57.90ID:CrcQtIJ/M まともに育つIDEを用意してくれや
とりあえず
とりあえず
23デフォルトの名無しさん (ワッチョイ 26bd-PkCJ)
2018/10/06(土) 08:46:02.31ID:d9G2ZJ030 すぐ環境のせいにする…(´・ω・`)
24デフォルトの名無しさん (JP 0H67-/FYQ)
2018/10/06(土) 08:48:27.61ID:ixe97h7gH だから spacemacs だって
25デフォルトの名無しさん (ワッチョイ 965b-zn+7)
2018/10/06(土) 08:49:31.50ID:CdYUXXMG026デフォルトの名無しさん (オイコラミネオ MMb6-37Ge)
2018/10/06(土) 08:50:42.89ID:CrcQtIJ/M 数十万行の他人が書いたソース・コードに一度でも溺れてみたらいいよ…
27デフォルトの名無しさん (ワッチョイ 26bd-PkCJ)
2018/10/06(土) 09:40:20.41ID:d9G2ZJ030 Cの頃はIDEに検索機能さえあれば、検索した結果をメモ帳にでも書きつけて行って簡単にコールグラフを作れた
なぜなら関数名はプログラムの中でほぼ一意とみなせたので、walk aroundの強力な指針となった
C++になったらそうでもなくなった
なぜなら関数名がオーバーロードされるようになった上に異なるクラスが同名のメソッドを持っているというケースが頻出する上に、
テンプレートやnamespaceまであるので
Cの頃から比べたら、解析の困難さは異次元のレベルすぎて草
現実的に解析を行えるかは、ソースコードの字面がどうかかれているかよりもクラスの意味が整理されているかに大きく依存する
もし仮に万が一、#if〜#endifで切りまくられたソースコードで正しくメソッドの定義元や呼び出し元一覧がクラスがテンプレートの
仮引数として渡されているケースについても正しく信用に足る一覧が出るIDEならちょっと欲しいかも
なぜなら関数名はプログラムの中でほぼ一意とみなせたので、walk aroundの強力な指針となった
C++になったらそうでもなくなった
なぜなら関数名がオーバーロードされるようになった上に異なるクラスが同名のメソッドを持っているというケースが頻出する上に、
テンプレートやnamespaceまであるので
Cの頃から比べたら、解析の困難さは異次元のレベルすぎて草
現実的に解析を行えるかは、ソースコードの字面がどうかかれているかよりもクラスの意味が整理されているかに大きく依存する
もし仮に万が一、#if〜#endifで切りまくられたソースコードで正しくメソッドの定義元や呼び出し元一覧がクラスがテンプレートの
仮引数として渡されているケースについても正しく信用に足る一覧が出るIDEならちょっと欲しいかも
28デフォルトの名無しさん (アウアウウー Sa30-z023)
2018/10/06(土) 10:32:45.07ID:hM5EPMW3a そんなあなたにdoxygen+graphviz
29デフォルトの名無しさん (ワッチョイ aab3-GL8C)
2018/10/06(土) 10:37:41.35ID:Gg92+MKo0 >>27
それできないとコンパイルすらできないんだけど…
それできないとコンパイルすらできないんだけど…
30デフォルトの名無しさん (ワッチョイ c0f2-vBoO)
2018/10/06(土) 10:59:24.19ID:GNSvvE670 コンパイラ(とそのコードを書いた本人)以外の人が把握するのが難しくなったということだろ。
ADLやらSFINAEやらで実際にどこの何が呼ばれるのか、プログラム全体をひっくり返してみないと
わからなかったりするしな。
ADLやらSFINAEやらで実際にどこの何が呼ばれるのか、プログラム全体をひっくり返してみないと
わからなかったりするしな。
31デフォルトの名無しさん (ワッチョイ 26bd-PkCJ)
2018/10/06(土) 11:00:25.81ID:d9G2ZJ03032デフォルトの名無しさん (ワッチョイ aab3-GL8C)
2018/10/06(土) 11:48:26.03ID:Gg92+MKo0 >>31
> コンパイラのビルドとIDEのインテリセンス能力は関係ない(ハズ。LLVMは知らん
技術的には可能だって話
> もし定義元を書き換えてエラーを起こせばエラーメッセージから呼び出し元がワカル、
> という考えならテンプレートが絡んだ瞬間に目が眩んで死ぬ
そんなアホな発想するやつがいるとは思わなかったよ w
> コンパイラのビルドとIDEのインテリセンス能力は関係ない(ハズ。LLVMは知らん
技術的には可能だって話
> もし定義元を書き換えてエラーを起こせばエラーメッセージから呼び出し元がワカル、
> という考えならテンプレートが絡んだ瞬間に目が眩んで死ぬ
そんなアホな発想するやつがいるとは思わなかったよ w
33デフォルトの名無しさん (アウアウウー Sa30-z023)
2018/10/06(土) 12:28:56.41ID:hM5EPMW3a34デフォルトの名無しさん (ワッチョイ 70b3-RseO)
2018/10/06(土) 14:07:27.04ID:9hP5TFYu035デフォルトの名無しさん (アウアウウー Sa30-z023)
2018/10/06(土) 14:36:17.51ID:hM5EPMW3a templateの一般的なルールってtemplate引数で汎用的に使えるのはTとかそんな感じ?
36デフォルトの名無しさん (ワッチョイ 9bc3-dNAh)
2018/10/06(土) 14:44:51.23ID:skeZ9l4z0 標準にあるis_integral_vとかdecay_tとかのvやtもハンガリアンの亜種といえば亜種なのか?
37デフォルトの名無しさん (ワッチョイ 70b3-RseO)
2018/10/06(土) 14:51:10.85ID:9hP5TFYu038デフォルトの名無しさん (ワッチョイ aab3-GL8C)
2018/10/06(土) 14:53:54.19ID:Gg92+MKo0 >>34
ドヤってるところ申し訳ないけどテンプレートにルールはないって言ってるやつはいないと思うぞ
ドヤってるところ申し訳ないけどテンプレートにルールはないって言ってるやつはいないと思うぞ
39デフォルトの名無しさん (ワッチョイ 70b3-RseO)
2018/10/06(土) 14:55:36.96ID:9hP5TFYu0 お前>>10を読んでそう思うのか
40デフォルトの名無しさん (ワッチョイ aab3-GL8C)
2018/10/06(土) 15:37:33.52ID:Gg92+MKo041デフォルトの名無しさん (スップ Sd02-YLcB)
2018/10/06(土) 15:45:25.65ID:8LWAn6RCd ハンガリアンなんてなんの役にも立たないどころか邪魔にしかならないルールでコーディングしてたら周りから叩かれるだろ
ジジイしかいないところでやってるのかな
ジジイしかいないところでやってるのかな
■ このスレッドは過去ログ倉庫に格納されています
