エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります
コードを貼れる所
http://codepad.org/
https://ideone.com/
前スレ
【初心者歓迎】C/C++室 Ver.102【環境依存OK】
http://mevius.5ch.net/test/read.cgi/tech/1509780815/
探検
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
■ このスレッドは過去ログ倉庫に格納されています
2018/07/01(日) 03:44:53.53ID:4MMF8cDN
674デフォルトの名無しさん
2018/11/07(水) 23:57:40.81ID:vv5bGR61 >>673
コンパイルするプログラムや出来たプログラムを実行するOSやハードウェアなどの諸々の環境
コンパイルするプログラムや出来たプログラムを実行するOSやハードウェアなどの諸々の環境
676デフォルトの名無しさん
2018/11/08(木) 00:05:29.53ID:M68F6j6d ターゲットになる処理系にあわせてコンパイルするからな
べつにターゲットになる処理系でコンパイルする必要はない
べつにターゲットになる処理系でコンパイルする必要はない
677673
2018/11/08(木) 00:44:14.28ID:ZMRuomnT ありがとうございます
ちょっとプログラムを見直してみます
ちょっとプログラムを見直してみます
678デフォルトの名無しさん
2018/11/08(木) 10:49:50.86ID:2uuB+50R679デフォルトの名無しさん
2018/11/08(木) 21:31:49.37ID:2V1Zc+AV constexpr char *mes[] ={(char *)"error", (char *)"ok" ,(char *)"abc"};
みたいにキャストしないとワーニングがでるんだが、めんどくさいね。なんか方法ないの?
みたいにキャストしないとワーニングがでるんだが、めんどくさいね。なんか方法ないの?
680デフォルトの名無しさん
2018/11/08(木) 21:41:57.89ID:YKdO2F6s constexpr const char *mes[] ={"error", "ok" , "abc"};
constexprが何にかかっていたか考えてみれ
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な筈だね。そうでないと矛盾する。この方が分かりやすいね。
ポインタにかかるのか、ポインタの中身にかかるのか?という問いだろうけれども恐らくはポインタ自体
にかかるのだろう。そして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"};
これをクラスのなかで定義したいのだが、クラスの中で定義するとエラーになる。クラス内だけで使いたいのに
外部に引き出すのは面倒だ。どうしたらいいの?
これをクラスのなかで定義したいのだが、クラスの中で定義するとエラーになる。クラス内だけで使いたいのに
外部に引き出すのは面倒だ。どうしたらいいの?
684デフォルトの名無しさん
2018/11/09(金) 08:48:09.13ID:B4AEy6G3 static
685はちみつ餃子 ◆8X2XSCHEME
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[] だが、書き換えるのは未定義ってことになってるという更なる闇がある)
書いている意味はさっぱりわからんが、文字列リテラルの型は 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 ワーニング
△ ウォーニング
△ ウォーニング
687はちみつ餃子 ◆8X2XSCHEME
2018/11/09(金) 12:19:21.70ID:yH/J6wNO >>686
カタカナにする時点で元の発音からずれまくりなので×も△も五十歩百歩だろ。
カタカナにする時点で元の発音からずれまくりなので×も△も五十歩百歩だろ。
688デフォルトの名無しさん
2018/11/09(金) 12:31:06.48ID:OW/zGENl ウォァニンぐらいでもOK
689デフォルトの名無しさん
2018/11/09(金) 12:33:34.59ID:LkGmFgiv 五十歩くらいマシ
690デフォルトの名無しさん
2018/11/09(金) 12:36:43.84ID:OW/zGENl pingをピングと言っちゃう国だから大丈夫だ
691デフォルトの名無しさん
2018/11/09(金) 12:44:17.18ID:CtgAvQda 壊れかけのレイディオ
692デフォルトの名無しさん
2018/11/09(金) 12:46:06.80ID:p9aTnaT/ KING KONG
693デフォルトの名無しさん
2018/11/09(金) 13:58:07.89ID:s4ONASkx694デフォルトの名無しさん
2018/11/09(金) 13:59:30.86ID:s4ONASkx ウォーニングが×
ワーニングの方がまし
ワーニングの方がまし
695デフォルトの名無しさん
2018/11/09(金) 15:56:52.94ID:6nxjQRlc >>693
アホ
アホ
696デフォルトの名無しさん
2018/11/09(金) 17:01:38.84ID:s4ONASkx 今調べてきた。確かにwikiとかでもウォーニングってなってんな
発音記号もcの逆みたいのが使われている
でも実際の発音を聞くと、あの方が近いぞ。まあどっちでもええわ
発音記号もcの逆みたいのが使われている
でも実際の発音を聞くと、あの方が近いぞ。まあどっちでもええわ
697デフォルトの名無しさん
2018/11/09(金) 19:27:01.40ID:PDy1KIPj 君のアナルはウサイン・ボルト
698デフォルトの名無しさん
2018/11/09(金) 19:47:28.26ID:gcFuq4sF 「警告」で良いだろう
699デフォルトの名無しさん
2018/11/09(金) 20:21:57.93ID:GUqFOdkW 5chで発音ガーとか何回見たことか…
なのでそういう奴が居そうなスレでは原語(warning)で書くのが基本
なのでそういう奴が居そうなスレでは原語(warning)で書くのが基本
700デフォルトの名無しさん
2018/11/09(金) 21:19:39.32ID:RK/u55Qe 「文字列リテラル型」って表現はよくわからない。文字列はリテラルじゃないの?
文字列のリテラル型というのであればリテラル型でない文字列ってあるんだろうか?
リテラルって何? 英語をやくしたら文字列って意味だろ。
文字列のリテラル型というのであればリテラル型でない文字列ってあるんだろうか?
リテラルって何? 英語をやくしたら文字列って意味だろ。
701デフォルトの名無しさん
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 のこと?
「文字列リテラル」ってキャラクターリテラルのことだろうか?
それなら日本語にすると「文字列」でOKと思う。文字列リテラルって文字列列ってことか?
つまりA character literal literal **str のこと?
703デフォルトの名無しさん
2018/11/09(金) 21:30:17.80ID:D+VwENVN char a[] = "abcd";
左辺のaが文字列で 右辺の "abcd" が文字列リテラル
左辺のaが文字列で 右辺の "abcd" が文字列リテラル
704デフォルトの名無しさん
2018/11/09(金) 21:31:35.81ID:RK/u55Qe それなら文字列配列だよな。
705デフォルトの名無しさん
2018/11/09(金) 21:33:21.78ID:D+VwENVN のんのん \0終端の文字配列 で 文字列になねるー
706デフォルトの名無しさん
2018/11/09(金) 21:33:25.58ID:RK/u55Qe707デフォルトの名無しさん
2018/11/09(金) 21:39:02.77ID:RK/u55Qe literalって頭が固くて融通が利かないって意味があるみたいだから、”abc”というように値が固定した
文字列って意味なんだね。
ということは
char literal 'a'
char literal "abc"
int literal 0x111
ということか。
文字列って意味なんだね。
ということは
char literal 'a'
char literal "abc"
int literal 0x111
ということか。
708デフォルトの名無しさん
2018/11/09(金) 21:40:08.63ID:RK/u55Qe まちがってる
char [] literal --> "abc"
char [] literal --> "abc"
709デフォルトの名無しさん
2018/11/09(金) 21:41:35.53ID:OW/zGENl 無名定数って感じかな
710デフォルトの名無しさん
2018/11/09(金) 21:56:52.98ID:9K071fMF "literal"って「文字通り」ってことだろう。
ソースコード中に埋め込まれた、値そのものを表す記述のこと。
ソースコード中に埋め込まれた、値そのものを表す記述のこと。
711デフォルトの名無しさん
2018/11/10(土) 01:12:58.35ID:4XqvBzsA int a = 10;
の「10」もリテラル
の「10」もリテラル
712はちみつ餃子 ◆8X2XSCHEME
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とか使えないし、どうすりゃいいのよ。
>古参ならうんざりするほど見てきた駄目なパターンだと思う。
>とりあえずキャストってのはほんとにやめて……。
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); も作っておけばいいのか。
納得。
納得。
715デフォルトの名無しさん
2018/11/10(土) 06:25:16.23ID:7XNdxnac >>702
>for the representation of a single character's value
a がついてるだろ。 つまりこれは1文字のことを言ってるんであって、複数文字ではないよ
で、主語を見ると、A character literalってあるから、そもそもこれは1キャラクタのリテラルの定義
なので、複数キャラ、単語等のリテラルの定義は他にあるはず
>for the representation of a single character's value
a がついてるだろ。 つまりこれは1文字のことを言ってるんであって、複数文字ではないよ
で、主語を見ると、A character literalってあるから、そもそもこれは1キャラクタのリテラルの定義
なので、複数キャラ、単語等のリテラルの定義は他にあるはず
716デフォルトの名無しさん
2018/11/10(土) 06:27:24.70ID:7XNdxnac 書き忘れた
a と、わざわざsingle もつけている
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
float literal 123.4 だぜ。 おかしいだろ。 float leteral なら"123.4"なら許せる。そもそもliteral使うところが
おかしい。
英語にだってconstantって言葉あるんだから、constantをつかったらいいのに。ところがconstはconstant
のことかと思いきや、read only 変数のことなんだよね。w
718デフォルトの名無しさん
2018/11/10(土) 09:00:12.85ID:jxhvzDRc 何がおかしいのかさっぱり分からん。
"文字通りの"という意味に囚われてるのかもしれないが、ソースコード上に123.4とあったらまぎれもなく文字通りだろう
"文字通りの"という意味に囚われてるのかもしれないが、ソースコード上に123.4とあったらまぎれもなく文字通りだろう
719デフォルトの名無しさん
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++
勘違いしてね?
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++
720デフォルトの名無しさん
2018/11/10(土) 10:11:13.71ID:D3ftxXru >>717
リテラルという言葉に「文字列」的なイメージを持っているならそれはなくした方がいいよ
リテラルという言葉に「文字列」的なイメージを持っているならそれはなくした方がいいよ
721デフォルトの名無しさん
2018/11/10(土) 10:14:48.88ID:D3ftxXru >>717
さらに追加
言うように3や3.14を定数と呼ぶとしても、リテラルと呼ぶことを排除できないと思うよ。
例えばこうなる。
「ソース中に3や3.14などの定数を記述する場合は数値リテラルを用いる。
数値リテラルは8進数、16進数、10進数の3種に大別されそれぞれ以下の形式である」
など。
さらに追加
言うように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
TI独自の問題? それとも警告レベル下げてるんじゃない。
問題なしだなんてとんでもない。問題大ありだよ。
そもそもC++ってCompileが全く通らない。なんでこんなにいちいちエラーをだすのかと腹が立つ。w
723デフォルトの名無しさん
2018/11/10(土) 10:22:01.23ID:0TCzpeyH >>722
お前なあ。 素人さんだったんだな
お前なあ。 素人さんだったんだな
724デフォルトの名無しさん
2018/11/10(土) 10:23:11.75ID:D3ftxXru >>714
c でも c++ でも const char * 版だけ作っておけばいい
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種に大別されそれぞれ以下の形式である」
このほうが自然とおもうが、、、
>「ソース中に3や3.14などの定数を記述する場合は数値リテラルを用いる。
>数値リテラルは8進数、16進数、10進数の3種に大別されそれぞれ以下の形式である」
違和感あるのは俺だけ?
「ソース中に3や3.14などの定数を記述する場合がある。。
定数は8進数、16進数、10進数の3種に大別されそれぞれ以下の形式である」
このほうが自然とおもうが、、、
726デフォルトの名無しさん
2018/11/10(土) 10:33:18.23ID:ZI6ornmy 俺はこっちの説明の方がしっくりくるな。リテラルと定数は意味合いが違う。
https://ja.wikipedia.org/wiki/定数_(プログラミング)
https://ja.wikipedia.org/wiki/定数_(プログラミング)
727デフォルトの名無しさん
2018/11/10(土) 10:47:21.32ID:9vqEahoA >>725
一般的な意味での定数なら8,16,10進数に限らず3進数だろうが78進数だろうが好きに考えることができるけど、ここで8,16,10進数だと限定していっているのは、あくまでもC/C++の構文の要素である「数値リテラル」な訳だから、全く別の概念として明確に区別して考えた方がいいよ。
言語仕様のBNFとか見てくればもう少し理解できるようになるかも。
一般的な意味での定数なら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を消費する邪魔もの。
でもconstのサンプルにはメッセージテーブルとかが良くかいてあるけど、ROM配置
じゃなくてRAM配置になるんだね。組み込みだとRAMが少ないから使えない。
constは役立たずというか貴重なRAMを消費する邪魔もの。
729デフォルトの名無しさん
2018/11/10(土) 11:44:26.40ID:/RO766KL そういう話ではなく
コンピュータサイエンスにおける「リテラル」の用法についての批判でしょ。
恐らくコンピュータサイエンスを学び始めたばかりの日本人が、
リテラルという用語を使い始めた英米の専門家に対して行う、
英語として不自然である、という批判。
コンピュータサイエンスにおける「リテラル」の用法についての批判でしょ。
恐らくコンピュータサイエンスを学び始めたばかりの日本人が、
リテラルという用語を使い始めた英米の専門家に対して行う、
英語として不自然である、という批判。
730デフォルトの名無しさん
2018/11/10(土) 11:47:06.40ID:p/77GMIT731デフォルトの名無しさん
2018/11/10(土) 11:53:57.16ID:/RO766KL >>730
頼むからまずはcの基本を勉強してくれ
頼むからまずはcの基本を勉強してくれ
732デフォルトの名無しさん
2018/11/10(土) 12:03:55.29ID:jxhvzDRc733デフォルトの名無しさん
2018/11/10(土) 12:49:34.25ID:hWkce6N8 これのどこが、「初心者歓迎」なんだよ。
734デフォルトの名無しさん
2018/11/10(土) 12:54:49.76ID:bQHYOdt1 嘘つきは歓迎しない
735デフォルトの名無しさん
2018/11/10(土) 12:55:21.30ID:fEBEuUFJ >>819が悪い。反省しろ
736デフォルトの名無しさん
2018/11/10(土) 12:57:37.55ID:hWkce6N8 a = a+10;
の意味も分からない人も、受け入れろよ。
の意味も分からない人も、受け入れろよ。
737デフォルトの名無しさん
2018/11/10(土) 13:51:00.28ID:4Oh2WWEl >>819にあつい期待
738デフォルトの名無しさん
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は有害だ。
どうだ理路整然としてるだろ。
これが基本じゃなのか? 高度な質問をしているつもりはないが、、、
頼むからまずは基本に答えてくれよ。
まずVSなど他のC++はしらない。自分の感想はTIのCCSコンパイラについてだけ。しかし一般的に
組み込み系には通じると思う。
const 定義すると.bssに配置される。.bssはRAMである。組み込みマイコンではRAMとROMに分かれて
いるがRAMは非常に貴重だ。ちなみに今使ってるCPUは4kしかない。ROMは256kバイトある。
constでメニューテーブルなどを書くのは愚の骨頂だろ。そもそもconstなどなければこういう間違いは起こらない。
故にconstは有害だ。
どうだ理路整然としてるだろ。
740デフォルトの名無しさん
2018/11/10(土) 19:53:11.97ID:dq/THaAw741さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 19:53:33.64ID:GxjHn4EZ トイレは水を大量に消費する。
ここには十分な水がない。
よってトイレは有害だ。
ここには十分な水がない。
よってトイレは有害だ。
743デフォルトの名無しさん
2018/11/10(土) 20:01:42.68ID:2010ximS constだけで飯が3杯食えるスレってあったよな確か。
飯一食1000円とすると、3杯で3000円。
constには3000円の価値があるってことだ。
しらべえによると、3文は90円だそうだから、早起きの33倍、constのほうが価値があるってことだ。
飯一食1000円とすると、3杯で3000円。
constには3000円の価値があるってことだ。
しらべえによると、3文は90円だそうだから、早起きの33倍、constのほうが価値があるってことだ。
744デフォルトの名無しさん
2018/11/10(土) 20:03:36.88ID:p/77GMIT >>741
そういうトイレは有害だ。ただしい。
結局んところconstはリードオンリーの意味しかない。リードオンリーのテーブルを作るのであればconstexprを
使えばいい。
リードオンリーの変数って何か意味があるんだろうか? 先ずは変数でありながら変更できない
のだから、実質的には変数ではない。本質的に存在自体が矛盾している。
たとえばリードオンリーであってもロックしたりアンロックできるのであれば意味がある。一旦ロックしたら
そのまんまってのでは、録に役にたたない。
そういうトイレは有害だ。ただしい。
結局んところ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だ。
ん。それは矛盾するだろ。基本的に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で修飾できるぞ。
749さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 20:16:00.60ID:zzsAm3V1 変数のconst,
文字列リテラルのconst,
メンバー関数のconst,
関数の仮引数のconst
文字列リテラルのconst,
メンバー関数のconst,
関数の仮引数のconst
750デフォルトの名無しさん
2018/11/10(土) 20:24:15.32ID:p/77GMIT >>749
それは知らなかったが、その肝はなんなの? 結局はリードオンリーってディフェンスしたいって
ことではないの?
物理的に書き込み可能ならリードオンリーにしてもディフェンスになんかならないでしょ。
ディフェンスするならライトプロテクト機能がどうしても必要だからね。
アクセスできないようにするには、Privateにして不可視にすればいい。これでディフェンスになる。
グローバルにさらしてなお且つリードオンリーにしておきたい変数がはたして必要だろうか?
必要性はないと思う。
具体的にどんな意味があるのよ。
それは知らなかったが、その肝はなんなの? 結局はリードオンリーってディフェンスしたいって
ことではないの?
物理的に書き込み可能ならリードオンリーにしてもディフェンスになんかならないでしょ。
ディフェンスするならライトプロテクト機能がどうしても必要だからね。
アクセスできないようにするには、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++から始めたほうがよい。
754さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 20:37:38.39ID:GxjHn4EZ メンバ関数プロトタイプの後ろをconstで修飾すれば、その関数の中ではthisがconstなポインタになり、
その関数の中ではconstではないメンバー関数は呼べなくなる。
つまり、constキャストを使わないと、thisを変更できなくなる。
その関数の中ではconstではないメンバー関数は呼べなくなる。
つまり、constキャストを使わないと、thisを変更できなくなる。
755デフォルトの名無しさん
2018/11/10(土) 20:38:58.59ID:AVLSNDa3756さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 20:43:43.52ID:GxjHn4EZ 関数の仮引数の型をconstで修飾すると、対応する実引数は変更できなくなる。
ただし、その仮引数にconstではない引数を渡すことはできる。
const付ければ多分変更されない。変更しようとすると、多分コンパイルエラー。
ただし、その仮引数にconstではない引数を渡すことはできる。
const付ければ多分変更されない。変更しようとすると、多分コンパイルエラー。
757さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 20:46:16.75ID:GxjHn4EZ struct X
{
void func1();
void func2() const;
};
func1からfunc2を呼び出せるが、その逆はできない。
{
void func1();
void func2() const;
};
func1からfunc2を呼び出せるが、その逆はできない。
758さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 20:51:32.82ID:GxjHn4EZ void func(const int& n)
{
...
}
funcの内部では(constキャストしないと)nは変更できない。多分。裏技使えば出来るかも。
{
...
}
funcの内部では(constキャストしないと)nは変更できない。多分。裏技使えば出来るかも。
759さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 20:56:23.68ID:GxjHn4EZ 組み込みでもC++使うんか?
760デフォルトの名無しさん
2018/11/10(土) 21:00:48.87ID:hLxIIZfE761デフォルトの名無しさん
2018/11/10(土) 21:06:11.15ID:p/77GMIT >>754
説得力がありそうな意見だが、残念ながら意味がよくわからないので一寸調べてみた。
2のことかな。
メリット
1.参照渡しに const 修飾子をつけることにより、引数の中身を書き換えないことを宣言することができる。
ポインタ渡しに const 修飾子をつけることにより、引数の中身を書き換えないことを宣言することができる。
2.const オブジェクトを引数にすると、そのオブジェクトのなかで呼び出せるメソッドは const メンバ関数のみ。
1はたしかにメリットがあると言わざるを得ない。
2は使い方次第だな。自分の場合はわざわざそこまで面倒なことはしない。
説得力がありそうな意見だが、残念ながら意味がよくわからないので一寸調べてみた。
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++を使うべき。
自分も最近しったんだが、組み込みで使うとC++は非常に効果を発揮する。(らしい。あまりできてない、、、)
すくなくても、クラスやnamespaceを使えるだけでも大いに助かる。Cと滅茶苦茶相性がいい。
ごちゃ混ぜでもスパゲティでも何ら問題ない。
組み込みでは絶対にC++を使うべき。
764デフォルトの名無しさん
2018/11/10(土) 21:18:06.51ID:p/77GMIT >マニュアルで .cinit section を検索しろよ
ありがと。検索してみます。
ありがと。検索してみます。
765デフォルトの名無しさん
2018/11/10(土) 21:30:31.24ID:0TCzpeyH766さまよえる蟻人間 ◆T6xkBnTXz7B0
2018/11/10(土) 21:32:50.82ID:GxjHn4EZ 初心を忘れぬ初心者歓迎ってことで
767デフォルトの名無しさん
2018/11/10(土) 21:35:12.51ID:D3ftxXru >>746
君は何も知らずに妄想だけから判断して>>730の考えに至ったわけじゃん。>>714からの流れでね。
関数の引数を char* と const char * にしたときの違いは、
君が勘違いしている、ではなく、なにかを読んで知ろうともせず
自分だけの想像で決めつけているような「このポインタが定数(変更不可)かどうか」ではなく、
ポインタが差している char 値が変更不可かどうかなんだ。
で、
君の考えはおそらくここに書いてないものも含めて8割がた
間違ってるから誰にもそれを一々教えることは無理なんだよ。
だから本を読むとかして基本を学んで欲しい。
今の君は想像で英語に文句つけてるくせにアルファベットも知らない子供みたいな状態。
君は何も知らずに妄想だけから判断して>>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++の生みの親が書いたような本が最も駄目だと思う。
C++は使い始めたばかりでよくわからないが、多重人格的で昔のC++と最近のC++が混在している
気がする。C++は糞って言ってる人は昔のC++をみていて、C++は最高って言ってる人は最近追加
された仕様を見ていると思う。
だからC++は基礎からやると駄目な言語だね。基礎は飛ばしてしまったほうがいい。
追加された仕様部分が秀逸だね。
だからあくまでも自分の意見だが「やさしい、、、、」ってのは寧ろ難解で駄目なのが多い気がする。
特にC++の生みの親が書いたような本が最も駄目だと思う。
769デフォルトの名無しさん
2018/11/10(土) 21:37:16.52ID:0TCzpeyH ID:p/77GMIT
もうこいつの相手をするのはやめよう。 単なる荒しだわ。 ここで終わり
もうこいつの相手をするのはやめよう。 単なる荒しだわ。 ここで終わり
770デフォルトの名無しさん
2018/11/10(土) 21:37:40.22ID:D3ftxXru771デフォルトの名無しさん
2018/11/10(土) 21:39:45.42ID:p/77GMIT772デフォルトの名無しさん
2018/11/10(土) 21:45:54.25ID:9vqEahoA >>768
C++は近年追加された仕様の方が複雑怪奇で迷走しているという意見もあるし、勝手な思い込みで基礎を蔑ろにするのはやめた方がいい。
constの理解についても、組み込みのCをやった経験に基づく自分の経験と思い込みを当然のものとして他人の話を聞くから理解が進まないのでは?
RAMにおくかROMに置くかとかも本来はC言語としては未定義とか処理系依存な部分であって、組み込みにおける常識をベースにCの言語仕様を理解しようとするから齟齬が生まれるのだと思う。
C++は近年追加された仕様の方が複雑怪奇で迷走しているという意見もあるし、勝手な思い込みで基礎を蔑ろにするのはやめた方がいい。
constの理解についても、組み込みのCをやった経験に基づく自分の経験と思い込みを当然のものとして他人の話を聞くから理解が進まないのでは?
RAMにおくかROMに置くかとかも本来はC言語としては未定義とか処理系依存な部分であって、組み込みにおける常識をベースにCの言語仕様を理解しようとするから齟齬が生まれるのだと思う。
773デフォルトの名無しさん
2018/11/10(土) 21:48:12.38ID:bQHYOdt1 >>761でよかったのか
まあ腑に落ちたようでなにより
まあ腑に落ちたようでなにより
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【熊本】園児に強制性交か 保育所勤務の男を逮捕「性的な欲望が我慢できなかった」警察は余罪を調べる [七波羅探題★]
- 日銀「歴史的」利上げ迫る 35年ぶりの年間上げ幅、0.5%の壁を突破 [蚤の市★]
- 空自機レーダー照射、音声データ公開 中国 [蚤の市★]
- 堀江貴文、キャッシュレス非対応の店にモヤッ 『PayPay』立ち上げの人物にまさかの直談判「現金決済しかできないんだけど…」 [冬月記者★]
- 【サッカー】上田綺世の活躍は「一過性」 15戦18発も…オランダ英雄は懐疑的な姿勢「確信に至っていない」 [ゴアマガラ★]
- 【おこめ券】鈴木農相 米価維持の意図「一切ない」★3 [ぐれ★]
- 【悲惨】中国軍が自衛隊に「事前通告」し自衛隊も返答した音声が公開されてしまうwwwこれは高市チェックアウトゕ [597533159]
- 中国の日本向けレアアースの輸出止まる、高市のせいで日本終了のお知らせ [931948549]
- 現役JKのお茶会スレ( ¨̮ )︎︎𖠚ᐝ180
- 🏡
- 韓国政府、高市早苗の「竹島領土」発言にブチギレwwwwwwwwwwwwwwww [834922174]
- 高市早苗「竹島は日本領土」 [834922174]
