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

■ このスレッドは過去ログ倉庫に格納されています
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

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

前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
679デフォルトの名無しさん
垢版 |
2018/11/08(木) 21:31:49.37ID:2V1Zc+AV
constexpr char *mes[] ={(char *)"error", (char *)"ok" ,(char *)"abc"};
みたいにキャストしないとワーニングがでるんだが、めんどくさいね。なんか方法ないの?
2018/11/08(木) 21:41:57.89ID:YKdO2F6s
constexpr const char *mes[] ={"error", "ok" , "abc"};

constexprが何にかかっていたか考えてみれ
681デフォルトの名無しさん
垢版 |
2018/11/09(金) 03:42:19.86ID:RK/u55Qe
constつけたらワーニングが無くなるのだろうか? 何故なくなるの?

ポインタにかかるのか、ポインタの中身にかかるのか?という問いだろうけれども恐らくはポインタ自体
にかかるのだろう。そしてconstがポインタの中身にかかる。順番が逆だといろいろ不都合がしょうじる
から、このようになる筈だ。
しかし、constを追加しただけでwarnningが消える理由はなんなのだろうか? (char*)でキャストするのと
同じ効果を持ちうるのはなぜか? constにはそんな意味はない。「単に書き換えできないようにする」
と言う意味だろう。書き換えできないsringももちろんあるから矛盾が生じるのだ。その矛盾を
解決する可能性があるとすれば書き換えできないstringがすなわちchar*と同じである場合に限る。
つまり
const string とは char* の事なのだ。
あってる?
もしあってるとすれば、
constexpr (char*) char *mes[] ={"error", "ok" , "abc"};
でもOKな筈だね。そうでないと矛盾する。この方が分かりやすいね。
682デフォルトの名無しさん
垢版 |
2018/11/09(金) 04:05:10.44ID:RK/u55Qe
そしてワーニングはすべてきえたが、エラーになった。w
683デフォルトの名無しさん
垢版 |
2018/11/09(金) 04:08:12.56ID:RK/u55Qe
constexpr const char *mes[] ={"error", "ok" , "abc"};
これをクラスのなかで定義したいのだが、クラスの中で定義するとエラーになる。クラス内だけで使いたいのに
外部に引き出すのは面倒だ。どうしたらいいの?
2018/11/09(金) 08:48:09.13ID:B4AEy6G3
static
2018/11/09(金) 11:35:02.44ID:yH/J6wNO
>>681
書いている意味はさっぱりわからんが、文字列リテラルの型は const char[] だ。
そんでもって >>679 の場合の文字列リテラルは暗黙の型変換で const char* になる。
const char* を char* に入れようとしたら型が合わないがキャストで無理やり合わせることも出来るという簡単な話。

だが、型から const を剥がしたからといって文字列リテラルを書き換えてよくなるわけではない。 (← 重要!)

const を剥がすだけなら問題はないが、
書き換えたら駄目 (未定義) にもかかわらず型から const を外すのは馬鹿馬鹿しい間違いの元。
よくわからんままキャストしたら警告が消えた〜〜っていうのはC/C++ の歴史で何十年も繰返してるので
古参ならうんざりするほど見てきた駄目なパターンだと思う。
とりあえずキャストってのはほんとにやめて……。

(ちなみに C では文字列リテラルの型は char[] だが、書き換えるのは未定義ってことになってるという更なる闇がある)
686デフォルトの名無しさん
垢版 |
2018/11/09(金) 11:51:24.81ID:p9aTnaT/
x ワーニング
△ ウォーニング
2018/11/09(金) 12:19:21.70ID:yH/J6wNO
>>686
カタカナにする時点で元の発音からずれまくりなので×も△も五十歩百歩だろ。
2018/11/09(金) 12:31:06.48ID:OW/zGENl
ウォァニンぐらいでもOK
2018/11/09(金) 12:33:34.59ID:LkGmFgiv
五十歩くらいマシ
2018/11/09(金) 12:36:43.84ID:OW/zGENl
pingをピングと言っちゃう国だから大丈夫だ
2018/11/09(金) 12:44:17.18ID:CtgAvQda
壊れかけのレイディオ
692デフォルトの名無しさん
垢版 |
2018/11/09(金) 12:46:06.80ID:p9aTnaT/
KING KONG
2018/11/09(金) 13:58:07.89ID:s4ONASkx
>>686
warning

ウァーニング だ
2018/11/09(金) 13:59:30.86ID:s4ONASkx
ウォーニングが×
ワーニングの方がまし
2018/11/09(金) 15:56:52.94ID:6nxjQRlc
>>693
アホ
2018/11/09(金) 17:01:38.84ID:s4ONASkx
今調べてきた。確かにwikiとかでもウォーニングってなってんな
発音記号もcの逆みたいのが使われている
でも実際の発音を聞くと、あの方が近いぞ。まあどっちでもええわ
2018/11/09(金) 19:27:01.40ID:PDy1KIPj
君のアナルはウサイン・ボルト
2018/11/09(金) 19:47:28.26ID:gcFuq4sF
「警告」で良いだろう
2018/11/09(金) 20:21:57.93ID:GUqFOdkW
5chで発音ガーとか何回見たことか…
なのでそういう奴が居そうなスレでは原語(warning)で書くのが基本
700デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:19:39.32ID:RK/u55Qe
「文字列リテラル型」って表現はよくわからない。文字列はリテラルじゃないの?
文字列のリテラル型というのであればリテラル型でない文字列ってあるんだろうか?
リテラルって何? 英語をやくしたら文字列って意味だろ。
2018/11/09(金) 21:21:10.22ID:OW/zGENl
即値というこれまた訳のわからない訳が出てくるからw
702デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:29:35.20ID:RK/u55Qe
A character literal is a type of literal in programming for the representation of a single character's value within the source code of a computer program.

「文字列リテラル」ってキャラクターリテラルのことだろうか?
それなら日本語にすると「文字列」でOKと思う。文字列リテラルって文字列列ってことか?
つまりA character literal literal **str のこと?
2018/11/09(金) 21:30:17.80ID:D+VwENVN
char a[] = "abcd";

左辺のaが文字列で 右辺の "abcd" が文字列リテラル
704デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:31:35.81ID:RK/u55Qe
それなら文字列配列だよな。
2018/11/09(金) 21:33:21.78ID:D+VwENVN
のんのん \0終端の文字配列 で 文字列になねるー
706デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:33:25.58ID:RK/u55Qe
>>703
アッごめん。704は無視して。
リテラルって、堅物って意味のほうか? そうなんだ。
707デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:39:02.77ID:RK/u55Qe
literalって頭が固くて融通が利かないって意味があるみたいだから、”abc”というように値が固定した
文字列って意味なんだね。
ということは
char literal 'a'
char literal "abc"
int literal 0x111
ということか。
708デフォルトの名無しさん
垢版 |
2018/11/09(金) 21:40:08.63ID:RK/u55Qe
まちがってる
char [] literal --> "abc"
2018/11/09(金) 21:41:35.53ID:OW/zGENl
無名定数って感じかな
2018/11/09(金) 21:56:52.98ID:9K071fMF
"literal"って「文字通り」ってことだろう。
ソースコード中に埋め込まれた、値そのものを表す記述のこと。
2018/11/10(土) 01:12:58.35ID:4XqvBzsA
int a = 10;
の「10」もリテラル
2018/11/10(土) 01:32:44.99ID:BAJLxFPC
リテラル型という用語もあるが、リテラル型がいわゆる「リテラル」とは限らないので気を付けてな。
713デフォルトの名無しさん
垢版 |
2018/11/10(土) 04:45:24.06ID:p/77GMIT
>よくわからんままキャストしたら警告が消えた〜〜っていうのはC/C++ の歴史で何十年も繰返してるので
>古参ならうんざりするほど見てきた駄目なパターンだと思う。
>とりあえずキャストってのはほんとにやめて……。

void uprint( char * message);
こういう関数って普通にあると思うが、そうすると
uprint((char *)"abc");
こんなふうにキャストしないでwarnigを取る方法ってありますの? 
そもそも関数の定義の仕方が悪いって意見? C++ってcと混在一体で使うところに多大な
メリットがあるわけで、cだとstringとか使えないし、どうすりゃいいのよ。
714デフォルトの名無しさん
垢版 |
2018/11/10(土) 04:56:10.50ID:p/77GMIT
あっ、わかった。C++の場合はvoid uprint( const char * message); も作っておけばいいのか。
納得。
2018/11/10(土) 06:25:16.23ID:7XNdxnac
>>702
>for the representation of a single character's value
a がついてるだろ。 つまりこれは1文字のことを言ってるんであって、複数文字ではないよ
で、主語を見ると、A character literalってあるから、そもそもこれは1キャラクタのリテラルの定義
なので、複数キャラ、単語等のリテラルの定義は他にあるはず
2018/11/10(土) 06:27:24.70ID:7XNdxnac
書き忘れた
a と、わざわざsingle もつけている
717デフォルトの名無しさん
垢版 |
2018/11/10(土) 07:11:22.05ID:p/77GMIT
charactor literalって命名は違和感あるな。
float literal 123.4 だぜ。 おかしいだろ。 float leteral なら"123.4"なら許せる。そもそもliteral使うところが
おかしい。
英語にだってconstantって言葉あるんだから、constantをつかったらいいのに。ところがconstはconstant
のことかと思いきや、read only 変数のことなんだよね。w
2018/11/10(土) 09:00:12.85ID:jxhvzDRc
何がおかしいのかさっぱり分からん。
"文字通りの"という意味に囚われてるのかもしれないが、ソースコード上に123.4とあったらまぎれもなく文字通りだろう
2018/11/10(土) 09:56:00.85ID:0TCzpeyH
>>713
勘違いしてね?

void f(char * message)
void c_f( const char * message)
のとき、
char *p = "abcde";
f("abc");
c_f("abc");
f(p);
c_f(p);
は全部警告なしで通るぞ。 問題があるのは、
const char *cp = "abcde";
としたときの
f(cp);
だけがエラーあるいは警告になる
2017の最新のVC++
2018/11/10(土) 10:11:13.71ID:D3ftxXru
>>717
リテラルという言葉に「文字列」的なイメージを持っているならそれはなくした方がいいよ
2018/11/10(土) 10:14:48.88ID:D3ftxXru
>>717
さらに追加
言うように3や3.14を定数と呼ぶとしても、リテラルと呼ぶことを排除できないと思うよ。
例えばこうなる。

「ソース中に3や3.14などの定数を記述する場合は数値リテラルを用いる。
数値リテラルは8進数、16進数、10進数の3種に大別されそれぞれ以下の形式である」

など。
722デフォルトの名無しさん
垢版 |
2018/11/10(土) 10:16:41.25ID:p/77GMIT
そうなの? TIのCCSってのを使いはじめたところだが、warning出まくりでいやになる。
TI独自の問題? それとも警告レベル下げてるんじゃない。
問題なしだなんてとんでもない。問題大ありだよ。
そもそもC++ってCompileが全く通らない。なんでこんなにいちいちエラーをだすのかと腹が立つ。w
2018/11/10(土) 10:22:01.23ID:0TCzpeyH
>>722
お前なあ。 素人さんだったんだな
2018/11/10(土) 10:23:11.75ID:D3ftxXru
>>714
c でも c++ でも const char * 版だけ作っておけばいい
725デフォルトの名無しさん
垢版 |
2018/11/10(土) 10:23:27.63ID:p/77GMIT
>>721
>「ソース中に3や3.14などの定数を記述する場合は数値リテラルを用いる。
>数値リテラルは8進数、16進数、10進数の3種に大別されそれぞれ以下の形式である」

違和感あるのは俺だけ?
「ソース中に3や3.14などの定数を記述する場合がある。。
定数は8進数、16進数、10進数の3種に大別されそれぞれ以下の形式である」
このほうが自然とおもうが、、、
2018/11/10(土) 10:33:18.23ID:ZI6ornmy
俺はこっちの説明の方がしっくりくるな。リテラルと定数は意味合いが違う。
https://ja.wikipedia.org/wiki/定数_(プログラミング)
2018/11/10(土) 10:47:21.32ID:9vqEahoA
>>725
一般的な意味での定数なら8,16,10進数に限らず3進数だろうが78進数だろうが好きに考えることができるけど、ここで8,16,10進数だと限定していっているのは、あくまでもC/C++の構文の要素である「数値リテラル」な訳だから、全く別の概念として明確に区別して考えた方がいいよ。
言語仕様のBNFとか見てくればもう少し理解できるようになるかも。
728デフォルトの名無しさん
垢版 |
2018/11/10(土) 11:43:56.10ID:p/77GMIT
Wikiの説明はわかりやすいね。
でもconstのサンプルにはメッセージテーブルとかが良くかいてあるけど、ROM配置
じゃなくてRAM配置になるんだね。組み込みだとRAMが少ないから使えない。
constは役立たずというか貴重なRAMを消費する邪魔もの。
2018/11/10(土) 11:44:26.40ID:/RO766KL
そういう話ではなく
コンピュータサイエンスにおける「リテラル」の用法についての批判でしょ。

恐らくコンピュータサイエンスを学び始めたばかりの日本人が、
リテラルという用語を使い始めた英米の専門家に対して行う、
英語として不自然である、という批判。
730デフォルトの名無しさん
垢版 |
2018/11/10(土) 11:47:06.40ID:p/77GMIT
>>724
組み込み観点ではそういう考え方はまずいんじゃない?
なるべくconstは使わない方が良いような気がする。RAMが貴重だからね。
2018/11/10(土) 11:53:57.16ID:/RO766KL
>>730
頼むからまずはcの基本を勉強してくれ
2018/11/10(土) 12:03:55.29ID:jxhvzDRc
>>728
一体どこをどう読んだらそんな結論になるんだよ。
頼むから断定調で嘘を撒き散らさないでくれ
2018/11/10(土) 12:49:34.25ID:hWkce6N8
これのどこが、「初心者歓迎」なんだよ。
2018/11/10(土) 12:54:49.76ID:bQHYOdt1
嘘つきは歓迎しない
2018/11/10(土) 12:55:21.30ID:fEBEuUFJ
>>819が悪い。反省しろ
2018/11/10(土) 12:57:37.55ID:hWkce6N8
a = a+10;
の意味も分からない人も、受け入れろよ。
2018/11/10(土) 13:51:00.28ID:4Oh2WWEl
>>819にあつい期待
2018/11/10(土) 14:10:49.25ID:AVLSNDa3
>>736
そこを否定している人はいない
739デフォルトの名無しさん
垢版 |
2018/11/10(土) 19:49:46.05ID:p/77GMIT
>頼むからまずはcの基本を勉強してくれ

これが基本じゃなのか? 高度な質問をしているつもりはないが、、、
頼むからまずは基本に答えてくれよ。

まずVSなど他のC++はしらない。自分の感想はTIのCCSコンパイラについてだけ。しかし一般的に
組み込み系には通じると思う。

const 定義すると.bssに配置される。.bssはRAMである。組み込みマイコンではRAMとROMに分かれて
いるがRAMは非常に貴重だ。ちなみに今使ってるCPUは4kしかない。ROMは256kバイトある。
constでメニューテーブルなどを書くのは愚の骨頂だろ。そもそもconstなどなければこういう間違いは起こらない。
故にconstは有害だ。
どうだ理路整然としてるだろ。
2018/11/10(土) 19:53:11.97ID:dq/THaAw
>>739
> const 定義すると.bssに配置される。
んなこたーない。
2018/11/10(土) 19:53:33.64ID:GxjHn4EZ
トイレは水を大量に消費する。
ここには十分な水がない。
よってトイレは有害だ。
742736
垢版 |
2018/11/10(土) 19:56:06.79ID:hWkce6N8
>>627は、俺だ。
743デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:01:42.68ID:2010ximS
constだけで飯が3杯食えるスレってあったよな確か。
飯一食1000円とすると、3杯で3000円。
constには3000円の価値があるってことだ。
しらべえによると、3文は90円だそうだから、早起きの33倍、constのほうが価値があるってことだ。
744デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:03:36.88ID:p/77GMIT
>>741
そういうトイレは有害だ。ただしい。

結局んところconstはリードオンリーの意味しかない。リードオンリーのテーブルを作るのであればconstexprを
使えばいい。
リードオンリーの変数って何か意味があるんだろうか? 先ずは変数でありながら変更できない
のだから、実質的には変数ではない。本質的に存在自体が矛盾している。
たとえばリードオンリーであってもロックしたりアンロックできるのであれば意味がある。一旦ロックしたら
そのまんまってのでは、録に役にたたない。
745デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:04:25.53ID:2010ximS
>>744
ヒント:メモリーフェンス。
746デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:09:30.23ID:p/77GMIT
>>740
ん。それは矛盾するだろ。基本的にC++のconstは変数だ。だから初期値は代入する。
それ以後はアクセスできない。少なくともRAMに配置する変数だ。ということは言える。
.bssに配置されるのかどうかはリンカでコントロールできるのかもしれない。ROMにだって無理やり配置は
可能だ。そういう無理やりのことをいってるのではない。あくまで自然なありかたとしてのconstだ。
747デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:10:49.63ID:p/77GMIT
>>745
言いたいことはわかるが、チャンと説明してみて、自分の間違いに気が付いた方がいい。
748デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:11:09.68ID:2010ximS
変数じゃなくてもメンバはconstで修飾できるぞ。
2018/11/10(土) 20:16:00.60ID:zzsAm3V1
変数のconst,
文字列リテラルのconst,
メンバー関数のconst,
関数の仮引数のconst
750デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:24:15.32ID:p/77GMIT
>>749
それは知らなかったが、その肝はなんなの? 結局はリードオンリーってディフェンスしたいって
ことではないの? 

物理的に書き込み可能ならリードオンリーにしてもディフェンスになんかならないでしょ。
ディフェンスするならライトプロテクト機能がどうしても必要だからね。
アクセスできないようにするには、Privateにして不可視にすればいい。これでディフェンスになる。
グローバルにさらしてなお且つリードオンリーにしておきたい変数がはたして必要だろうか?
 必要性はないと思う。
具体的にどんな意味があるのよ。
751デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:25:53.82ID:2010ximS
知らないで難癖付けてたのかよ。
752デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:26:38.74ID:p/77GMIT
>変数じゃなくてもメンバはconstで修飾できるぞ。

出来て何の意味があるのかということが知りたい。意味がないなら邪魔だな。
753デフォルトの名無しさん
垢版 |
2018/11/10(土) 20:30:17.34ID:2010ximS
高橋マナ著やさしいC++から始めたほうがよい。
2018/11/10(土) 20:37:38.39ID:GxjHn4EZ
メンバ関数プロトタイプの後ろをconstで修飾すれば、その関数の中ではthisがconstなポインタになり、
その関数の中ではconstではないメンバー関数は呼べなくなる。
つまり、constキャストを使わないと、thisを変更できなくなる。
2018/11/10(土) 20:38:58.59ID:AVLSNDa3
>>752
あなたの言葉を借りるとconstはコンパイル時に「ディフェンス」するので
ランタイムで「ディフェンス」するよりも少ないコストで問題を発見できる
これは意味があることだ
2018/11/10(土) 20:43:43.52ID:GxjHn4EZ
関数の仮引数の型をconstで修飾すると、対応する実引数は変更できなくなる。
ただし、その仮引数にconstではない引数を渡すことはできる。
const付ければ多分変更されない。変更しようとすると、多分コンパイルエラー。
2018/11/10(土) 20:46:16.75ID:GxjHn4EZ
struct X
{
void func1();
void func2() const;
};
func1からfunc2を呼び出せるが、その逆はできない。
2018/11/10(土) 20:51:32.82ID:GxjHn4EZ
void func(const int& n)
{
...
}

funcの内部では(constキャストしないと)nは変更できない。多分。裏技使えば出来るかも。
2018/11/10(土) 20:56:23.68ID:GxjHn4EZ
組み込みでもC++使うんか?
2018/11/10(土) 21:00:48.87ID:hLxIIZfE
>>739
> 自分の感想はTIのCCSコンパイラについてだけ。
マニュアルで .cinit section を検索しろよ
761デフォルトの名無しさん
垢版 |
2018/11/10(土) 21:06:11.15ID:p/77GMIT
>>754
 説得力がありそうな意見だが、残念ながら意味がよくわからないので一寸調べてみた。
2のことかな。

メリット
1.参照渡しに const 修飾子をつけることにより、引数の中身を書き換えないことを宣言することができる。
  ポインタ渡しに const 修飾子をつけることにより、引数の中身を書き換えないことを宣言することができる。
2.const オブジェクトを引数にすると、そのオブジェクトのなかで呼び出せるメソッドは const メンバ関数のみ。

1はたしかにメリットがあると言わざるを得ない。
2は使い方次第だな。自分の場合はわざわざそこまで面倒なことはしない。
762デフォルトの名無しさん
垢版 |
2018/11/10(土) 21:07:06.71ID:p/77GMIT
>>755
一理ある。
763デフォルトの名無しさん
垢版 |
2018/11/10(土) 21:11:56.84ID:p/77GMIT
>>759
自分も最近しったんだが、組み込みで使うとC++は非常に効果を発揮する。(らしい。あまりできてない、、、)
すくなくても、クラスやnamespaceを使えるだけでも大いに助かる。Cと滅茶苦茶相性がいい。
ごちゃ混ぜでもスパゲティでも何ら問題ない。
組み込みでは絶対にC++を使うべき。
764デフォルトの名無しさん
垢版 |
2018/11/10(土) 21:18:06.51ID:p/77GMIT
>マニュアルで .cinit section を検索しろよ
ありがと。検索してみます。
2018/11/10(土) 21:30:31.24ID:0TCzpeyH
>>752
お前、ほんとド素人なんだよな
しったか素人は単なる荒しと変わらんわ。 邪魔にしかならない
2018/11/10(土) 21:32:50.82ID:GxjHn4EZ
初心を忘れぬ初心者歓迎ってことで
2018/11/10(土) 21:35:12.51ID:D3ftxXru
>>746
君は何も知らずに妄想だけから判断して>>730の考えに至ったわけじゃん。>>714からの流れでね。

関数の引数を char* と const char * にしたときの違いは、
君が勘違いしている、ではなく、なにかを読んで知ろうともせず
自分だけの想像で決めつけているような「このポインタが定数(変更不可)かどうか」ではなく、
ポインタが差している char 値が変更不可かどうかなんだ。

で、
君の考えはおそらくここに書いてないものも含めて8割がた
間違ってるから誰にもそれを一々教えることは無理なんだよ。
だから本を読むとかして基本を学んで欲しい。
今の君は想像で英語に文句つけてるくせにアルファベットも知らない子供みたいな状態。
768デフォルトの名無しさん
垢版 |
2018/11/10(土) 21:35:33.57ID:p/77GMIT
>高橋マナ著やさしいC++から始めたほうがよい。

C++は使い始めたばかりでよくわからないが、多重人格的で昔のC++と最近のC++が混在している
気がする。C++は糞って言ってる人は昔のC++をみていて、C++は最高って言ってる人は最近追加
された仕様を見ていると思う。
だからC++は基礎からやると駄目な言語だね。基礎は飛ばしてしまったほうがいい。
追加された仕様部分が秀逸だね。
だからあくまでも自分の意見だが「やさしい、、、、」ってのは寧ろ難解で駄目なのが多い気がする。
特にC++の生みの親が書いたような本が最も駄目だと思う。
2018/11/10(土) 21:37:16.52ID:0TCzpeyH
ID:p/77GMIT

もうこいつの相手をするのはやめよう。 単なる荒しだわ。 ここで終わり
2018/11/10(土) 21:37:40.22ID:D3ftxXru
>>767
>君が勘違いしている、ではなく、なにかを読んで知ろうともせず
>自分だけの想像で決めつけているような

ここ表現が変か
何も調べてないんだから単なる妄想であって勘違いですらないということ。
771デフォルトの名無しさん
垢版 |
2018/11/10(土) 21:39:45.42ID:p/77GMIT
>>767
だれも最初は子供だからね。
視野が狭いのであって、思考がまちがっているんではないというところに気が付いてほしい。
だから視野が広がれば正しい結論にいたる。
そして結論は761
2018/11/10(土) 21:45:54.25ID:9vqEahoA
>>768
C++は近年追加された仕様の方が複雑怪奇で迷走しているという意見もあるし、勝手な思い込みで基礎を蔑ろにするのはやめた方がいい。
constの理解についても、組み込みのCをやった経験に基づく自分の経験と思い込みを当然のものとして他人の話を聞くから理解が進まないのでは?
RAMにおくかROMに置くかとかも本来はC言語としては未定義とか処理系依存な部分であって、組み込みにおける常識をベースにCの言語仕様を理解しようとするから齟齬が生まれるのだと思う。
2018/11/10(土) 21:48:12.38ID:bQHYOdt1
>>761でよかったのか
まあ腑に落ちたようでなにより
2018/11/10(土) 21:48:35.96ID:dq/THaAw
組み込みだってconst変数がRAMに置かれるなんて常識は無いよ。この人の思い込み。
775デフォルトの名無しさん
垢版 |
2018/11/10(土) 22:12:42.07ID:mjExs0JA
このスレにいるような低学歴知恵遅れは
引数だけでなくメソッドにもconstつけるべきというのすら分かってない
クラスの引数にconstつける意味を分かってなさそうだからな
2018/11/10(土) 23:08:29.94ID:yzCMB8/E
セクション配置の話なのにメソッドのconst関係ねーだろ
意味わかってないのはてめーだ、いつものことだが
777デフォルトの名無しさん
垢版 |
2018/11/10(土) 23:17:52.02ID:mjExs0JA
やっぱり低学歴知恵遅れはなにも分かってない
2018/11/11(日) 02:36:59.36ID:ARqR0CiK
bss セクションは、リンカの文書を見れば?

メモリ配置と、文法のconst は関係ない。
基本的に、言語の文法と実装は、関係ない

実装は、JavaScript の文法に関係ない、DOM とか

できる限り、const を使うべき!
使っても、マイナスにはならないから

たぶん、Effective 本にも書いてある
■ このスレッドは過去ログ倉庫に格納されています