エスケープシーケンスやWin32APIなどの環境依存なものでもOK。
ただしその場合、質問者は必ず環境を書きましょう。
◆ソースのインデントについて
半角空白やTABでのインデントはスレに貼ると無くなります。
そのため、アップローダーに上げるのも手ですが直接貼る場合は、
全角空白か に置換すると見栄えだけはよくなります。
【アップローダー】(質問が長い時はココ使うと便利)
http://codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック)
http://ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
前スレ
【初心者歓迎】C/C++室 Ver.100【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1478440682/
【初心者歓迎】C/C++室 Ver.101【環境依存OK】 [無断転載禁止]©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2017/07/18(火) 07:07:27.20ID:vzMDiUgd
329デフォルトの名無しさん
2017/08/09(水) 18:30:53.88ID:hewgQard using F = void () &;
struct A { void f() & {} };
F A::*const &mp = &A::f;
参照もこのぐらい複雑になるとコンパイラーですら正しく実装できないものが出てくる
struct A { void f() & {} };
F A::*const &mp = &A::f;
参照もこのぐらい複雑になるとコンパイラーですら正しく実装できないものが出てくる
330デフォルトの名無しさん
2017/08/09(水) 20:42:43.33ID:deJRgLks 初心者歓迎スレはいつから難読コードスレになったんだ?
331デフォルトの名無しさん
2017/08/09(水) 23:21:19.78ID:HVjwey6J 難読禁止スレではないし
それより言語を断らずにc++限定の話すんなや
それより言語を断らずにc++限定の話すんなや
332デフォルトの名無しさん
2017/08/09(水) 23:58:04.92ID:1RczvVHb ぷらぷらは意図しない難読化しやすいよなぁ
333デフォルトの名無しさん
2017/08/10(木) 00:19:15.22ID:iih/xgGV おまえらは意図してドヤ顔でオナニーコード貼って理解できないなら出家しろとか言ってるからな。
初心者相手にマウンティングとか見てて恥ずかしい。
初心者相手にマウンティングとか見てて恥ずかしい。
334デフォルトの名無しさん
2017/08/10(木) 07:19:08.51ID:9leEGZbL バカにマウンティングしてるお前や俺よりマシだろ w
335デフォルトの名無しさん
2017/08/10(木) 07:42:54.68ID:0ifqJKrS http://d.hatena.ne.jp/yupo5656/20060907/
この話ってグローバル変数の時だけと思っていいですか?
void f(){ const char g[] = "asdf"; }
だと毎回初期化する分、損になりそうに思うんですが
この話ってグローバル変数の時だけと思っていいですか?
void f(){ const char g[] = "asdf"; }
だと毎回初期化する分、損になりそうに思うんですが
336デフォルトの名無しさん
2017/08/10(木) 07:57:39.32ID:OxRJE4uH 普通は最適化されて何の問題もないだろうけど
組み込み用の一部の糞コンパイラとかで使う可能性があるなら書き換えておいた方が良いかもね
組み込み用の一部の糞コンパイラとかで使う可能性があるなら書き換えておいた方が良いかもね
337デフォルトの名無しさん
2017/08/10(木) 08:00:25.98ID:OxRJE4uH 極端に悪くなる可能性のあるコードにしない
汎用性のあるコードを書く時の基本
特定の環境だけならその環境でテストしてみればわかること
汎用性のあるコードを書く時の基本
特定の環境だけならその環境でテストしてみればわかること
338デフォルトの名無しさん
2017/08/10(木) 08:05:23.26ID:PWbZqU7d >>335
だからstatic付けろって書いてあるっしょ
だからstatic付けろって書いてあるっしょ
339デフォルトの名無しさん
2017/08/10(木) 12:55:02.15ID:XSzwBP/X リテラルに名前付けたいだけなら
auto&&var=リテラル
何も考えずこれでええw
auto&&var=リテラル
何も考えずこれでええw
340はちみつ餃子 ◆8X2XSCHEME
2017/08/10(木) 13:19:12.39ID:eseR3mB4 せやろか
341デフォルトの名無しさん
2017/08/10(木) 14:56:24.20ID:R7slyUqA はいそうです
342デフォルトの名無しさん
2017/08/10(木) 16:20:23.29ID:K3yW/cOR もしかして#defineで定数用意するよりそっちの方がかっこいい?
343デフォルトの名無しさん
2017/08/10(木) 16:58:59.12ID:R5q9oGzu マクロ多用するとデバッグ面倒にならね?
344デフォルトの名無しさん
2017/08/10(木) 16:59:23.11ID:9PTjWwFP #define A 100 ←存在が害悪の化石老人
auto &&A = 100; ←ODRを考えない短絡思考
constexpr int A = 100; // ←ふつうの人
constexpr auto &&A = 100; // ←ちょっとヘンな人
auto &&A = 100; ←ODRを考えない短絡思考
constexpr int A = 100; // ←ふつうの人
constexpr auto &&A = 100; // ←ちょっとヘンな人
345デフォルトの名無しさん
2017/08/10(木) 18:17:00.74ID:OxRJE4uH 組み込みCだとdefineしか出来なかったりするんだよ
346デフォルトの名無しさん
2017/08/10(木) 18:23:30.24ID:0YJhJ81N >>344
ODR って何の略?
ODR って何の略?
347デフォルトの名無しさん
2017/08/10(木) 18:53:23.23ID:cpubt7xV >>346
ODRとはOne Definition RuleのことでC++の重要なルールである。
Cの仮定義と異なりC++ではインライン関数やテンプレートを除き
「定義」が複数あってはならない。
この多重定義の禁止と一部の例外を定めたルールがODRと呼ばれる。
例えばauto && A = 100;が記述されたヘッダファイルを
二つの翻訳単位からincludeしたとすると
二つの翻訳単位でAが定義されることになりエラーとなる。
詳細は処理系のマニュアルを見よ。
ODRとはOne Definition RuleのことでC++の重要なルールである。
Cの仮定義と異なりC++ではインライン関数やテンプレートを除き
「定義」が複数あってはならない。
この多重定義の禁止と一部の例外を定めたルールがODRと呼ばれる。
例えばauto && A = 100;が記述されたヘッダファイルを
二つの翻訳単位からincludeしたとすると
二つの翻訳単位でAが定義されることになりエラーとなる。
詳細は処理系のマニュアルを見よ。
348デフォルトの名無しさん
2017/08/10(木) 19:40:58.66ID:1RrigXav もしかしてヘッダファイルにconstexpr auto &&A = "lkjdslkjf";とか書くのって合法?
#define 名前 定数としてたやつは全部constexpr auto &&名前 = 定数で置き換えられる?
#define 名前 定数としてたやつは全部constexpr auto &&名前 = 定数で置き換えられる?
349デフォルトの名無しさん
2017/08/10(木) 21:11:04.47ID:yu1iQyxx350デフォルトの名無しさん
2017/08/11(金) 03:47:43.97ID:eOUFNbYQ #define→enum→const→constexpr
定数書くのに変わり杉です
理想論いらないです#define溢れた現実世界見よ
定数書くのに変わり杉です
理想論いらないです#define溢れた現実世界見よ
351デフォルトの名無しさん
2017/08/11(金) 08:37:53.72ID:NrUav3sg352デフォルトの名無しさん
2017/08/11(金) 08:55:50.68ID:xt3khzo9 constexprにしたほうがいいものがconstになってるのは結構あるけど、defineなんてほぼ見ないけどな
353デフォルトの名無しさん
2017/08/11(金) 11:58:39.97ID:vOciZ7Dc >>351
Aで詐欺でもしてるんですか?
Aで詐欺でもしてるんですか?
354はちみつ餃子 ◆8X2XSCHEME
2017/08/11(金) 13:32:11.00ID:eZ0/1svY さすがに #define は殺そう
355デフォルトの名無しさん
2017/08/11(金) 14:16:58.81ID:Tw4iEl8C 組み込みのチープな世界を知らないんだな
356デフォルトの名無しさん
2017/08/11(金) 14:29:14.52ID:Ngnf1AZe 知る必要すらない
357デフォルトの名無しさん
2017/08/11(金) 14:37:28.25ID:Tw4iEl8C リッチな環境限定のスレじゃないから
環境依存OK
環境依存OK
358デフォルトの名無しさん
2017/08/11(金) 14:39:12.01ID:Tw4iEl8C 知る必要がない人が大部分だろうが
ここはそういう人限定のスレではない
ここはそういう人限定のスレではない
359デフォルトの名無しさん
2017/08/11(金) 14:40:43.01ID:Tw4iEl8C >>354 みたいなのを見ると、視野が狭いと思ってしまう
色々な事情で色々なコードがある
色々な事情で色々なコードがある
360デフォルトの名無しさん
2017/08/11(金) 14:43:55.42ID:Tw4iEl8C Cに移植する可能性がゼロであるコードをC++上で新規でdefineで書いてたら老害だと思う
361デフォルトの名無しさん
2017/08/11(金) 15:18:06.60ID:BFfVWgAm 組み込みCだとstatic const使えてもアセンブリレベルで
即値にならないので#defineは常識
環境依存スレで多様性否定する奴は去れ
即値にならないので#defineは常識
環境依存スレで多様性否定する奴は去れ
362デフォルトの名無しさん
2017/08/11(金) 15:54:54.01ID:99wg1jHM >>355
どこのコンパイラ使ってるか書いてみ
どこのコンパイラ使ってるか書いてみ
364デフォルトの名無しさん
2017/08/11(金) 19:54:31.22ID:+jIwXf8Q constとconstexprの違いがよくわからない
365デフォルトの名無しさん
2017/08/11(金) 20:11:06.67ID:TX++PaV2 動的か静的かの違い?
366デフォルトの名無しさん
2017/08/11(金) 20:26:59.57ID:xY0P43RN ROM に書ける内容だったら constexpr
RAM に置かなければならないのなら const
RAM に置かなければならないのなら const
367デフォルトの名無しさん
2017/08/11(金) 20:35:58.34ID:+GdUPlS/ ROMって見たこと無いけど実在するの?
368デフォルトの名無しさん
2017/08/11(金) 22:35:43.38ID:nYt6U0do >>323
分かるヤツ使ってればいいだろ
分かるヤツ使ってればいいだろ
369デフォルトの名無しさん
2017/08/11(金) 22:38:20.04ID:+GdUPlS/ >>364
どちらもコンパイル時に決まるものも決まらないものも扱うUNKO仕様なので常人が理解できないのは致し方ない
一つ知っておくべきなのは「constexprの変数はコンパイル時に決まるもののみ」ということ
どちらもコンパイル時に決まるものも決まらないものも扱うUNKO仕様なので常人が理解できないのは致し方ない
一つ知っておくべきなのは「constexprの変数はコンパイル時に決まるもののみ」ということ
370デフォルトの名無しさん
2017/08/12(土) 06:07:41.79ID:Bi4KH0eW371デフォルトの名無しさん
2017/08/12(土) 08:39:04.62ID:kmz0IeX9 メモリ増設の時ぐらいしかスロット見ないし
え?別の話?
え?別の話?
372デフォルトの名無しさん
2017/08/12(土) 08:43:37.90ID:4bZijuJS 光学メディアもROM、RAMか
373デフォルトの名無しさん
2017/08/12(土) 08:45:12.28ID:W5hpPQ56 デシタルネイティブ「RAMもROMを見たことがない」
374デフォルトの名無しさん
2017/08/12(土) 09:18:14.87ID:l8v9tpAX375デフォルトの名無しさん
2017/08/12(土) 11:23:24.91ID:cYvxwySm376デフォルトの名無しさん
2017/08/12(土) 11:30:23.35ID:Rv1gs3bL CDショップやDVDレンタルショップがあってもそこに並んでいるのがROMだと認識できない無知なだけでは
378デフォルトの名無しさん
2017/08/12(土) 14:27:13.69ID:sYSoZbpb CDROMなら知ってるよ
379デフォルトの名無しさん
2017/08/12(土) 15:36:58.80ID:B05a5g6/ まあスマホのスペックにはROMとRAMの容量が書いてあるけど
殆どの利用者は理解してないな
殆どの利用者は理解してないな
380はちみつ餃子 ◆8X2XSCHEME
2017/08/12(土) 16:26:44.03ID:5zwa3GdH スマホの表記で ROM って言ってるの、そもそも ROM じゃないだろっていう。
381デフォルトの名無しさん
2017/08/12(土) 17:41:32.36ID:ORwFQQja フラッシュはEEPROMの一種だからな
382デフォルトの名無しさん
2017/08/12(土) 18:25:30.05ID:Bi4KH0eW フラッシュはROMの一種
383デフォルトの名無しさん
2017/08/12(土) 22:15:11.32ID:KtFjlZWy class C {
private:
static int secret;
public:
friend int peep() {return secret;}
};
このpeepはどうやって呼び出すのが正解なんだぜ?
private:
static int secret;
public:
friend int peep() {return secret;}
};
このpeepはどうやって呼び出すのが正解なんだぜ?
384デフォルトの名無しさん
2017/08/12(土) 22:18:47.73ID:3DdLvbHE てかそれコンパイル通る?
385デフォルトの名無しさん
2017/08/12(土) 22:25:08.16ID:KtFjlZWy386デフォルトの名無しさん
2017/08/12(土) 22:28:18.66ID:3DdLvbHE へー、通るんだ。
とりあえず、peep()はメンバー関数じゃないから引数にCを渡すなりするのが普通の使い方だろう。
とりあえず、peep()はメンバー関数じゃないから引数にCを渡すなりするのが普通の使い方だろう。
387デフォルトの名無しさん
2017/08/12(土) 22:33:38.16ID:l8v9tpAX388デフォルトの名無しさん
2017/08/12(土) 22:41:10.73ID:KtFjlZWy おおお
Cクラス渡すと通った
class C {
private:
static int secret;
public:
friend int peep(C data) {return secret;}
};
int PosCalc(BOOL flag) {
C data(0, 0)
int count = peep(data);
//いろいろ計算
}
ダミーでインスタンス渡すってことなんだな
Cクラス渡すと通った
class C {
private:
static int secret;
public:
friend int peep(C data) {return secret;}
};
int PosCalc(BOOL flag) {
C data(0, 0)
int count = peep(data);
//いろいろ計算
}
ダミーでインスタンス渡すってことなんだな
389デフォルトの名無しさん
2017/08/12(土) 22:44:09.18ID:WjSPvpbD friendの意味分かってる?
390デフォルトの名無しさん
2017/08/12(土) 22:53:16.34ID:Yi4OBpEw ROM 不揮発メモリ
RAM 揮発メモリ
リードオンリー何それ
RAM 揮発メモリ
リードオンリー何それ
391デフォルトの名無しさん
2017/08/12(土) 23:05:04.34ID:Bi4KH0eW MRAMとかFRAMは不揮発
392デフォルトの名無しさん
2017/08/12(土) 23:05:42.05ID:qm/cOPpP393デフォルトの名無しさん
2017/08/12(土) 23:10:35.92ID:3DdLvbHE secretはstaticだったか。見落としてた。
394はちみつ餃子 ◆8X2XSCHEME
2017/08/13(日) 00:36:14.04ID:B4YDUmld >>387
Read Only つってるのに、意味が拡大して結局それどういう意味なんだよっていう
Read Only つってるのに、意味が拡大して結局それどういう意味なんだよっていう
395デフォルトの名無しさん
2017/08/13(日) 01:36:36.53ID:HI8S2XNx 文脈で判断しないと。CでROMつったら不揮発性メモリのこと。CDROMのことではない。
396デフォルトの名無しさん
2017/08/13(日) 01:39:15.30ID:PA7iDDOj それにしてもfirendって付けた関数の方にボディーを書くことが出来るんだな
キモ
キモ
397片山博文MZ ◆T6xkBnTXz7B0
2017/08/13(日) 01:59:58.88ID:8O7/DK3E CでぇーROMまんてぃっく
398デフォルトの名無しさん
2017/08/13(日) 06:29:34.48ID:03rMAOAx >>395
それは違う
それは違う
399デフォルトの名無しさん
2017/08/13(日) 06:30:06.63ID:03rMAOAx >>396
friendじゃなくてもかけるけど
friendじゃなくてもかけるけど
400デフォルトの名無しさん
2017/08/13(日) 07:55:49.45ID:WSSr83j3 >>390
ReadOnlyMemory
ReadOnlyMemory
401デフォルトの名無しさん
2017/08/13(日) 08:21:05.43ID:49RznEc3 揮発不揮発は関係ない
読み込みと同等の速度で普通に書き込みが出来るか
Cの場合、普通の代入やmemcpyで普通に書き込み出来るかどうか
読み込みと同等の速度で普通に書き込みが出来るか
Cの場合、普通の代入やmemcpyで普通に書き込み出来るかどうか
402デフォルトの名無しさん
2017/08/13(日) 09:45:28.87ID:HI8S2XNx >>398
おまえのマイコンにはCDROMが内臓されてるのかよ。馬鹿は休み休みいえ。
おまえのマイコンにはCDROMが内臓されてるのかよ。馬鹿は休み休みいえ。
403デフォルトの名無しさん
2017/08/13(日) 10:05:31.19ID:HI8S2XNx >>401
また頓珍漢なことを。
また頓珍漢なことを。
404デフォルトの名無しさん
2017/08/13(日) 10:16:39.11ID:TSMbvEPJ405デフォルトの名無しさん
2017/08/13(日) 10:25:56.46ID:HI8S2XNx EEPROMの一種だろうが。組み込み経験ない奴はもうレスすんな。
406デフォルトの名無しさん
2017/08/13(日) 10:37:54.73ID:TSMbvEPJ 組み込み経験と何の関係がw
407デフォルトの名無しさん
2017/08/13(日) 10:38:05.69ID:PA7iDDOj >>399
普通friend指定はこのようにするとおもう
http://www.sirochro.com/note/cpp-class-friend-function/
それを
http://ideone.com/qc8SUA
のように出来るのはキモいと思うが
普通friend指定はこのようにするとおもう
http://www.sirochro.com/note/cpp-class-friend-function/
それを
http://ideone.com/qc8SUA
のように出来るのはキモいと思うが
408デフォルトの名無しさん
2017/08/13(日) 11:19:48.45ID:HG5dPUko >>404
フラッシュメモリはROMの仲間だけど…
フラッシュメモリはROMの仲間だけど…
409デフォルトの名無しさん
2017/08/13(日) 11:20:22.74ID:md5XkZ0n EEPROMはROMなのか?
410デフォルトの名無しさん
2017/08/13(日) 11:31:45.02ID:HG5dPUko 不揮発性だけどROMでしょ
411デフォルトの名無しさん
2017/08/13(日) 20:43:58.81ID:Tf2liO6H そりゃ揮発性のROMって意味ないから...
412デフォルトの名無しさん
2017/08/13(日) 21:09:32.11ID:1akT1/u1 肉抜きのステーキとかチーズ抜きのチーズバーガーみたいなもの?
413デフォルトの名無しさん
2017/08/13(日) 23:37:23.43ID:b2PcXx/4 そういうこと言うから豆腐ステーキとか書きたくなる
414デフォルトの名無しさん
2017/08/13(日) 23:41:05.82ID:WikyJvVl415デフォルトの名無しさん
2017/08/13(日) 23:45:20.52ID:WikyJvVl ん?天抜きとかたのまないの?
416デフォルトの名無しさん
2017/08/13(日) 23:51:34.49ID:TSMbvEPJ 天ぬきは天ぷら抜きの天ぷら蕎麦じゃないからな。
417デフォルトの名無しさん
2017/08/14(月) 00:40:01.90ID:NpV9/t44 世の中知らんやつらが多いな
418デフォルトの名無しさん
2017/08/14(月) 00:46:16.17ID:NpV9/t44 フラッシュもEEPROMもROMと呼ばれる
ROMの語源はRead Only Memory
でも、今は消去や書き込みが可能なメモリにも使われるようになった
読み書きともランダムアクセスが可能で、アクセス時間も読み込みと書き込みで大きな差が無いものがRAM
DRAMやSRAM, MRAM, FRAMがこの範疇
そうでないものがROM
NAND, NOR, EEPROMなんかはROMという扱い
ROMの語源はRead Only Memory
でも、今は消去や書き込みが可能なメモリにも使われるようになった
読み書きともランダムアクセスが可能で、アクセス時間も読み込みと書き込みで大きな差が無いものがRAM
DRAMやSRAM, MRAM, FRAMがこの範疇
そうでないものがROM
NAND, NOR, EEPROMなんかはROMという扱い
419デフォルトの名無しさん
2017/08/14(月) 00:59:13.70ID:qET1a6fj いろんな人がいるね。
俺の中では電源切っても覚えてるかどうかの違いだよ。
俺の中では電源切っても覚えてるかどうかの違いだよ。
420デフォルトの名無しさん
2017/08/14(月) 01:00:55.60ID:NpV9/t44 MRAMはROMか?
FRAMはROMか?
FRAMはROMか?
421デフォルトの名無しさん
2017/08/14(月) 01:16:56.43ID:qET1a6fj ROMです(俺の中ではね)
422デフォルトの名無しさん
2017/08/14(月) 01:33:45.85ID:IT2ffc23 ID:qET1a6fjが非常識なのはよく分かったけどあまり言いふらさない方が生活し易いと思うよ
423デフォルトの名無しさん
2017/08/14(月) 01:37:55.14ID:IeoGyZA4 もう少し役立つ話題にしろよ
424デフォルトの名無しさん
2017/08/14(月) 04:51:13.03ID:qbtpazWw template <typename T>
class DataStoreArray
{
public:
explicit DataStoreArray(std::size_t size) : mValueArray(new T[size]) {}
~DataStoreArray() { delete [] mValueArray; }
inline T operator[](std::size_t index) const
{
cout << "from primary : T : " << index <<endl;
return mValueArray[index];
}
inline T& operator[](std::size_t index)
{
cout << "from primary : T& : " << index <<endl;
return mValueArray[index];
}
private: T* mValueArray;
};
int main()
{
static const int size = 3;
DataStoreArray<int> iStoreArray(size);
for (int i = 0; i < size; ++i)
{
iStoreArray[i] = i * 10;
}
}
from primary : T& : 0
from primary : T& : 1
from primary : T& : 2
iStoreArray2[i] = i * 10;で[]をオーバーロードした時
戻り値がT&のほうが呼び出されるのはなんででしょうか?
class DataStoreArray
{
public:
explicit DataStoreArray(std::size_t size) : mValueArray(new T[size]) {}
~DataStoreArray() { delete [] mValueArray; }
inline T operator[](std::size_t index) const
{
cout << "from primary : T : " << index <<endl;
return mValueArray[index];
}
inline T& operator[](std::size_t index)
{
cout << "from primary : T& : " << index <<endl;
return mValueArray[index];
}
private: T* mValueArray;
};
int main()
{
static const int size = 3;
DataStoreArray<int> iStoreArray(size);
for (int i = 0; i < size; ++i)
{
iStoreArray[i] = i * 10;
}
}
from primary : T& : 0
from primary : T& : 1
from primary : T& : 2
iStoreArray2[i] = i * 10;で[]をオーバーロードした時
戻り値がT&のほうが呼び出されるのはなんででしょうか?
425デフォルトの名無しさん
2017/08/14(月) 05:23:42.65ID:P3rVXCaa class Point {
public:
Point() {}
int x, y;
};
std::vector<Point*> vec;
vec..push_back(new Point());
こんな感じに作られたvectorの中のPointを解放するにはどうしたらいいでしょうか
以下のようなコードを考えて実行していたところ、free_base.cppというところで例外が発生しました
内容は「block Error reading register value.」です
for (unsigned int i = 0; i < vec.size(); i++) {
delete vec[i];
}
public:
Point() {}
int x, y;
};
std::vector<Point*> vec;
vec..push_back(new Point());
こんな感じに作られたvectorの中のPointを解放するにはどうしたらいいでしょうか
以下のようなコードを考えて実行していたところ、free_base.cppというところで例外が発生しました
内容は「block Error reading register value.」です
for (unsigned int i = 0; i < vec.size(); i++) {
delete vec[i];
}
426424
2017/08/14(月) 05:24:58.54ID:qbtpazWw >>424
自己解決しました。
自己解決しました。
427デフォルトの名無しさん
2017/08/14(月) 05:58:41.65ID:qbtpazWw >>425
タイプミスとは思うけどvec..push_backのドット2つ付けてるのが原因じゃ
タイプミスとは思うけどvec..push_backのドット2つ付けてるのが原因じゃ
428デフォルトの名無しさん
2017/08/14(月) 18:57:13.14ID:6kKovBuY >>427
それではないです
それではないです
■ このスレッドは過去ログ倉庫に格納されています
