次スレを立てる時は本文の1行目に以下を追加して下さい
!extend:on:vvvvv:1000:512
C++に関する質問やら話題やらはこちらへどうぞ。
ただし質問の前にはFAQに一通り目を通してください。
IDE (VC++など)などの使い方の質問はその開発環境のスレにお願いします。
前スレ
C++相談室 part131
http://mevius.2ch.net/test/read.cgi/tech/1501295308/
このスレもよろしくね。
【初心者歓迎】C/C++室 Ver.101【環境依存OK】
http://mevius.2ch.net/test/read.cgi/tech/1500329247/
■長いソースを貼るときはここへ。■
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++相談室 part132
■ このスレッドは過去ログ倉庫に格納されています
1デフォルトの名無しさん 転載ダメ (ワッチョイ faeb-wbjw)
2017/10/10(火) 00:11:34.01ID:nc/5PI4P0202デフォルトの名無しさん (オッペケ Sr85-+cZg)
2017/10/24(火) 20:56:05.26ID:YuTKkjXTr 昭和のアロマが強烈
203デフォルトの名無しさん (ワッチョイ 7abd-GnHq)
2017/10/24(火) 21:14:49.95ID:yRLde5ii0 良く考えずに書いたが良く考えたら普通は
std::vector<std::vector<int>> jug_array(5000);
と書くところだったなあ…
std::vector<std::vector<int>> jug_array(5000);
と書くところだったなあ…
204デフォルトの名無しさん (ワッチョイ bab3-QZhF)
2017/10/24(火) 21:50:21.25ID:018tmIsf0 UWPスレとか毛色が違うみたいだし、C++/CLIスレとか落ちてるんでここで教えて下さい
VS2017のC++/WinRTで新しいプロジェクトを作成
(Visual C++ → Windowsユニバーサル → 単体テストアプリ)
実行すると TEST APP 、Unit Test 、Tests Running の3つの文字が出てくるウィンドウが出てきます
しかし、UnitTestApp.xaml の Application要素の中身は、空っぽです
新しくブランクページを作ると、Page要素になって、デザインできる上にボタン等を貼り付けると
Page要素の中に要素が作られます
Application要素の中身は一体どこにあるのでしょう?
VS2017のC++/WinRTで新しいプロジェクトを作成
(Visual C++ → Windowsユニバーサル → 単体テストアプリ)
実行すると TEST APP 、Unit Test 、Tests Running の3つの文字が出てくるウィンドウが出てきます
しかし、UnitTestApp.xaml の Application要素の中身は、空っぽです
新しくブランクページを作ると、Page要素になって、デザインできる上にボタン等を貼り付けると
Page要素の中に要素が作られます
Application要素の中身は一体どこにあるのでしょう?
205デフォルトの名無しさん (ワッチョイ d681-wEwp)
2017/10/24(火) 22:02:36.84ID:hjkLVxi70206デフォルトの名無しさん (ワッチョイ bab3-QZhF)
2017/10/24(火) 22:15:38.33ID:018tmIsf0207デフォルトの名無しさん (ワッチョイ e5b3-2TAP)
2017/10/25(水) 18:49:27.48ID:qOXOqU1a0 c++でダックタイピングのようなものをやりたいです。
void型で受け取ったクラスを自前で用意したインターフェースクラスにキャストして関数を呼び出すって可能ですか?
やり方や参考になるサイトなどあれば教えて欲しいです。
templateでの型消去はコンパイル段階でクラスを知らないせいで弾かれてしまっているようです……
void型で受け取ったクラスを自前で用意したインターフェースクラスにキャストして関数を呼び出すって可能ですか?
やり方や参考になるサイトなどあれば教えて欲しいです。
templateでの型消去はコンパイル段階でクラスを知らないせいで弾かれてしまっているようです……
208デフォルトの名無しさん (ワッチョイ 7a8a-WXi2)
2017/10/25(水) 19:02:03.57ID:16XMr+7o0 vfptrの実装状況によるから、未知の抽象クラスのメソッドって
呼べないと思うんだが
呼べないと思うんだが
209デフォルトの名無しさん (ワッチョイ e5b3-2TAP)
2017/10/25(水) 19:20:07.39ID:qOXOqU1a0210デフォルトの名無しさん (ワッチョイ a504-7unl)
2017/10/25(水) 19:21:19.49ID:Srjg9fpL0211デフォルトの名無しさん (ワッチョイ a504-7unl)
2017/10/25(水) 19:28:12.28ID:Srjg9fpL0212デフォルトの名無しさん (ワッチョイ e5b3-2TAP)
2017/10/25(水) 19:38:49.97ID:qOXOqU1a0213デフォルトの名無しさん (ブーイモ MM71-v1IO)
2017/10/25(水) 20:09:22.57ID:r5sy60NsM おおっと、auto の話題には注意しないとな。
214デフォルトの名無しさん (オッペケ Sr85-+cZg)
2017/10/25(水) 20:51:07.58ID:t7oUy/d3r 昭和生まれの老害はそろそろ引退すべき
215デフォルトの名無しさん (ブーイモ MM71-VTYL)
2017/10/25(水) 20:55:21.88ID:SS3Ej639M 64年生まれの妹が不憫でならない
216デフォルトの名無しさん (スプッッ Sd7a-7kQB)
2017/10/25(水) 22:31:10.63ID:Nep/tIRvd .outからsoファイル呼び出す形を作ってるのだけど
変数の共有するのってグローバル変数にするのとシングルとんみたいなの作る以外にある?
関数の引数にはできない状態だと
変数の共有するのってグローバル変数にするのとシングルとんみたいなの作る以外にある?
関数の引数にはできない状態だと
217デフォルトの名無しさん (ワッチョイ 6b3e-gj0X)
2017/10/26(木) 01:08:27.67ID:KrANDw+50218デフォルトの名無しさん (ワッチョイ e983-nu9H)
2017/10/26(木) 01:17:12.83ID:SQPezUK20219デフォルトの名無しさん (ワッチョイ d178-4HSd)
2017/10/26(木) 02:08:33.19ID:s0ODk43E0 イッツautoマーチック
220デフォルトの名無しさん (ワッチョイ 1323-Lz9C)
2017/10/26(木) 03:38:24.52ID:H69oM85Y0221デフォルトの名無しさん (ワッチョイ 6b3e-gj0X)
2017/10/26(木) 08:42:36.44ID:KrANDw+50 >>219
まんまやん
まんまやん
222デフォルトの名無しさん (ワッチョイ 6b3e-gj0X)
2017/10/26(木) 08:43:28.94ID:KrANDw+50 >>220
ああ、確かに環境変数も使うね。
ああ、確かに環境変数も使うね。
223デフォルトの名無しさん (ササクッテロロ Sp9d-Ol9m)
2017/10/26(木) 14:14:49.39ID:yHns7wn+p >>218
パッケージソフトやゲームはガン無視か
パッケージソフトやゲームはガン無視か
224デフォルトの名無しさん (スプッッ Sd73-Gmo/)
2017/10/26(木) 14:32:13.77ID:3HeaIUwTd OSと組み込みとドライバって特権階級かなんかなの?
225デフォルトの名無しさん (アウアウカー Saed-UWC9)
2017/10/26(木) 14:59:42.90ID:97gM9QaUa >>218がその世界しか知らない(それ以外は俺にはかんけーない)ということにじゃないかな
226デフォルトの名無しさん (ワッチョイ 93b3-FaL7)
2017/10/26(木) 16:12:23.15ID:fpqT055X0 OS内部とかドライバとか、位置によってはメモリ確保の方法変わってくるし
組み込みで動的にメモリ確保とか怖くってやってらんねーとかじゃい?
静的か自動変数にインスタンスの実体置くなら一応なんとかなるんだろうけど・・・
いや、静的だとコンストラクタがくっそ面倒か? auto とか生きてくるのって、
大抵ばかすかコンテナに要素しこたま抱える様な用途だしな
組み込みで動的にメモリ確保とか怖くってやってらんねーとかじゃい?
静的か自動変数にインスタンスの実体置くなら一応なんとかなるんだろうけど・・・
いや、静的だとコンストラクタがくっそ面倒か? auto とか生きてくるのって、
大抵ばかすかコンテナに要素しこたま抱える様な用途だしな
227223 (ワッチョイ 11b3-20SA)
2017/10/26(木) 16:48:19.15ID:sfpBhfHr0 いやautoの議論にケチつけたつもりは無いよ(俺も滅多にauto使わんし
C++の実用される現場といえばOS、組み込み、ドライバくらいしか挙げない人が多いから釘刺したかっただけ
C++の実用される現場といえばOS、組み込み、ドライバくらいしか挙げない人が多いから釘刺したかっただけ
228デフォルトの名無しさん (ワッチョイ 917f-20SA)
2017/10/26(木) 17:11:31.86ID:kUEk6KjE0 auto使わないとか頭固すぎ
使えるところは全てautoだわ
使えるところは全てautoだわ
229デフォルトの名無しさん (ワッチョイ 1323-Lz9C)
2017/10/26(木) 17:59:27.25ID:obzhKUOY0 単なるシンタックスシュガーでなんのオーバーヘッドや副作用があるわけじゃ無いしな
230デフォルトの名無しさん (ワッチョイ 69b3-20SA)
2017/10/26(木) 18:40:54.94ID:se7vIA1E0 auto下痢症
231デフォルトの名無しさん (ワッチョイ eb8a-1LOm)
2017/10/26(木) 18:55:08.38ID:EF3aiwNW0 autoネタ大人気だな
俺もiteratorなんかじゃ迷わずauto使うけど
ポインタすらちゃんと理解してないような奴が無闇にauto使ってるのを見るとね
俺もiteratorなんかじゃ迷わずauto使うけど
ポインタすらちゃんと理解してないような奴が無闇にauto使ってるのを見るとね
232デフォルトの名無しさん (ワッチョイ 0beb-nu9H)
2017/10/26(木) 18:57:53.27ID:KmwbyHDC0 それ以上autoの話をするのはアウトだぞ
233デフォルトの名無しさん (ワッチョイ 69b3-20SA)
2017/10/26(木) 19:55:30.03ID:se7vIA1E0 おぉっと
234デフォルトの名無しさん (ワッチョイ 9193-cGPg)
2017/10/26(木) 20:20:21.90ID:8UQnYlEC0 同じ話題ばかりで食傷気味、もう吐きそう。
…というこの書き込みも同系ネタで済まぬ。
…というこの書き込みも同系ネタで済まぬ。
235デフォルトの名無しさん (ドコグロ MM3d-DDuF)
2017/10/26(木) 22:27:19.25ID:oyaJ8gC3M236片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/26(木) 22:29:12.27ID:LcK6lNJBd237デフォルトの名無しさん (ワッチョイ ebe8-nu9H)
2017/10/26(木) 22:31:49.27ID:6866r+hk0 嘔吐嘔吐、うるせーなぁ(´・ω・`)
238デフォルトの名無しさん (ワッチョイ 6b5b-OCcV)
2017/10/27(金) 04:04:41.73ID:lyx9X4ms0 >>228
同感
同感
240デフォルトの名無しさん (スップ Sd73-Gmo/)
2017/10/27(金) 08:33:50.52ID:beF6mKBOd C++使わないとか頭固すぎ
使えるところは全部C++だわ
使えるところは全部C++だわ
241デフォルトの名無しさん (ワッチョイ 1323-Lz9C)
2017/10/27(金) 08:39:18.11ID:2A0a9mBA0 単なるシンタックスシュガーでオーバーヘッドとか副作用無いしねw
242デフォルトの名無しさん (ワッチョイ 1323-Lz9C)
2017/10/27(金) 08:39:47.11ID:2A0a9mBA0 いやテンプレートは違うか
244デフォルトの名無しさん (ワッチョイ e983-nu9H)
2017/10/27(金) 09:37:02.86ID:EP/R3fy90 ID:2A0a9mBA0 ←こういう馬鹿が本当にC++使ってるとは思えない。無職だろう。
245デフォルトの名無しさん (ワンミングク MM53-9Hsu)
2017/10/27(金) 09:50:50.86ID:+sOx5VXfM auto絶対使わないマンってややこしい型も、全部手で書いてるの?
ET使うときとかどうしてんだろ。
ET使うときとかどうしてんだろ。
246デフォルトの名無しさん (スプッッ Sd73-Lz9C)
2017/10/27(金) 10:00:22.45ID:tbT2n0brd テンプレートを除いた部分は単なるシンタックスシュガーだよ?
o->vftbl->f(o, a) と書こうが o->f(a) と書こうが何の違いもない。
テンプレートはチューリングマシンとしての計算能力があるから別だけど。
o->vftbl->f(o, a) と書こうが o->f(a) と書こうが何の違いもない。
テンプレートはチューリングマシンとしての計算能力があるから別だけど。
247デフォルトの名無しさん (ワッチョイ 11b3-20SA)
2017/10/27(金) 10:25:02.18ID:n3hllmLr0 >>245
ET使う時って評価するときか?
auto a = b + c * d;
これやるとautoの型は式テンプレートで、評価が起きないから困ったことになるぞ
(まだ評価せずに組み合わせる場合は逆にautoが便利だけど)
ET作るときや実装時は確かに型がややこしいけど、普通returnの一文で終わるから
return {うんたらかんたら};
で済むと思う
あと、ET周りの関数の宣言時をautoでやってしまうと、実装完了まで使用できないというのが足かせになると思うぞ
ET使う時って評価するときか?
auto a = b + c * d;
これやるとautoの型は式テンプレートで、評価が起きないから困ったことになるぞ
(まだ評価せずに組み合わせる場合は逆にautoが便利だけど)
ET作るときや実装時は確かに型がややこしいけど、普通returnの一文で終わるから
return {うんたらかんたら};
で済むと思う
あと、ET周りの関数の宣言時をautoでやってしまうと、実装完了まで使用できないというのが足かせになると思うぞ
248デフォルトの名無しさん (ワッチョイ 13cf-ZNW+)
2017/10/27(金) 11:54:16.72ID:2++1MvhW0 auto使うのって例えば
template <class U, class V>
auto func(U& a, V& b) -> decltype(a + b);
みたいに戻り値の型が簡単に推測しにくい時に使ってるけどな
template <class U, class V>
auto func(U& a, V& b) -> decltype(a + b);
みたいに戻り値の型が簡単に推測しにくい時に使ってるけどな
249デフォルトの名無しさん (ワッチョイ ebe8-O+EC)
2017/10/27(金) 19:49:19.03ID:+sWf4zsJ0 auto LocalFunc = [&]() { ... };
250デフォルトの名無しさん (ブーイモ MMeb-gj0X)
2017/10/27(金) 22:31:31.38ID:67YjQzLBM251デフォルトの名無しさん (ワッチョイ 13e7-20SA)
2017/10/27(金) 22:53:59.94ID:cIkV9qHA0 同じだろう
252デフォルトの名無しさん (ワッチョイ 93b3-FaL7)
2017/10/28(土) 01:40:27.36ID:rDr3prXm0 mapみたいな複数行にまたがるようなのを
for( auto const & r: hoge ){}
とかにまとめる用途にしか怖くて使えんな
意図しない型になってたけどたまたまコンパイルに通ってたとか
後で仕様変更とか根元の hoge 書き換え後にたまたまコンパイルに通ってたりとかで
期待したメソッドの動作にならなかったりとかされるとハマりそうで怖い
for( auto const & r: hoge ){}
とかにまとめる用途にしか怖くて使えんな
意図しない型になってたけどたまたまコンパイルに通ってたとか
後で仕様変更とか根元の hoge 書き換え後にたまたまコンパイルに通ってたりとかで
期待したメソッドの動作にならなかったりとかされるとハマりそうで怖い
253デフォルトの名無しさん (ワッチョイ a180-aATY)
2017/10/28(土) 02:17:51.25ID:pC+TnRxI0 >>252
暗黙の型変換乱用しないかぎりそんな事ならんと思うが
暗黙の型変換乱用しないかぎりそんな事ならんと思うが
254デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/28(土) 08:28:41.62ID:Jnrw/MWj0 テクノロジーに善悪は無い
255デフォルトの名無しさん (ワッチョイ 93b3-FaL7)
2017/10/28(土) 08:44:41.02ID:rDr3prXm0 >>253
暗黙の云々とかoperator=とかが怖いってだけ
それに後から読み返した時、どんな戻り値が欲しかったのかとか
autoだとわかり辛いって事がままあるし、autoはなるべくあちこちに散乱させたくない
.NET方面のvarとかも気持ち悪いったらありゃしない・・・
暗黙の云々とかoperator=とかが怖いってだけ
それに後から読み返した時、どんな戻り値が欲しかったのかとか
autoだとわかり辛いって事がままあるし、autoはなるべくあちこちに散乱させたくない
.NET方面のvarとかも気持ち悪いったらありゃしない・・・
256デフォルトの名無しさん (スップ Sd73-0RRx)
2017/10/28(土) 08:56:43.01ID:JVsxHO5Xd autoの数々の利点のほうが大きいからどの言語でも型推論は基本になってきてるな
メイヤーズも言ってるしマイクロソフトも推奨してるし
メイヤーズも言ってるしマイクロソフトも推奨してるし
257デフォルトの名無しさん (ワッチョイ 6b15-OCcV)
2017/10/28(土) 09:55:15.82ID:QoaQu2To0 autoはどのように推定されるかを理解して使うもので、
断じてバカ用のヘルパーではない
バカ自身はそれがわからないから変な杞憂に陥るってだけ
断じてバカ用のヘルパーではない
バカ自身はそれがわからないから変な杞憂に陥るってだけ
258デフォルトの名無しさん (ワッチョイ 33eb-Eec1)
2017/10/28(土) 11:02:25.42ID:J8kLZQh+0 バカだけどIDEさんが、IDEさんさえいてくれれば大丈夫だ問題ない
259デフォルトの名無しさん (ワッチョイ eb8a-1LOm)
2017/10/28(土) 12:14:14.53ID:BDtptoiy0 初心者はまずauto使わずにプログラミング出来るようになってからにした方がいいね
260デフォルトの名無しさん (ワッチョイ 9193-cGPg)
2017/10/28(土) 17:38:09.89ID:VIxhg0oq0 auto使わずにコンパイラの警告レベルを最高、警告は即エラーって設定にして
テンプレートライブラリ使ったテストプログラムを書いてみると
autoのありがた味が分かると思う。
ループの制御変数の型がえらいことになったりするからな。
いわんやイテレータをや。
テンプレートライブラリ使ったテストプログラムを書いてみると
autoのありがた味が分かると思う。
ループの制御変数の型がえらいことになったりするからな。
いわんやイテレータをや。
261デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/28(土) 22:00:09.12ID:Jnrw/MWj0 例えば
Bar x;
auto z = x;
としたときに、zはの型は必ずBarになってBarの基底クラスになったりしないの?
Bar x;
auto z = x;
としたときに、zはの型は必ずBarになってBarの基底クラスになったりしないの?
263デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/28(土) 22:03:17.64ID:Jnrw/MWj0 Barの基底クラスがFooだとして、
実はBarはコピコンがprivateでなぜかoperator Foo()だけがpublicで定義されているかもしれない
かもしれない運転、
実はBarはコピコンがprivateでなぜかoperator Foo()だけがpublicで定義されているかもしれない
かもしれない運転、
264デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/28(土) 22:11:30.59ID:Jnrw/MWj0 あるいは
class Foo {
void assign(const &Foo) { ... } // (A)
};
class Bar : public Foo {
void assign(const &Foo) { ... } // (B)
};
Foo x1, x2;
Bar y;
auto z = x1;
z.assign(x2); // (C)
y = z;
とかなときに(C)で呼ばれるassign()はどっち?
class Foo {
void assign(const &Foo) { ... } // (A)
};
class Bar : public Foo {
void assign(const &Foo) { ... } // (B)
};
Foo x1, x2;
Bar y;
auto z = x1;
z.assign(x2); // (C)
y = z;
とかなときに(C)で呼ばれるassign()はどっち?
266片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/28(土) 22:16:47.80ID:TWx2GtJid 参照なしのautoで代入だから、この場合は同じ型でコピーだね。メソッドは仮想関数でもないから、同じクラスのメソッドが呼ばれるはずだ。
267デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/28(土) 22:57:04.67ID:Jnrw/MWj0 C++で起き得るBarとFooのパターン全てについてテストケースを考えるのは無理ゲーすぐる、
auto儲はどのようにして有限の人生と無限に近い(ときに想像を絶する結果をもたらす)C++の自由度との折り合いを付けているのであろうか…
auto儲はどのようにして有限の人生と無限に近い(ときに想像を絶する結果をもたらす)C++の自由度との折り合いを付けているのであろうか…
268片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/28(土) 23:02:38.36ID:TWx2GtJid かしこいIDE使ってるなら、ビルドしたらその場でautoの型がわかるはず。スマートに行こうぜ、スマートに。
269デフォルトの名無しさん (オッペケ Sr9d-SZnS)
2017/10/28(土) 23:49:55.51ID:n2BUqhCar struct S {};
using Bar = S const;
Bar x;
auto z = x;
必ずしも同じ型ではないな
using Bar = S const;
Bar x;
auto z = x;
必ずしも同じ型ではないな
270デフォルトの名無しさん (ワッチョイ a180-aATY)
2017/10/29(日) 01:18:54.15ID:jdBIz2nU0271デフォルトの名無しさん (ワッチョイ e983-nu9H)
2017/10/29(日) 05:32:17.05ID:0yKrkLYC0 大量のC++のコードを読み、大量のC++を書いてきた人は今更シンタックスを変えようとは思わない。
碌にコードを読んだことがない、書かない人が文法を変えたがるのだ。
外国人の日本語入門者が「は」と「が」が難しいからautoにしろ、どっちの意味かは読む人、聞く人が考えろと言ってるうなもの。
ひらがなとカタカナを統一しろとかね。日本人ならそうは思わない。日本語を使い続けて必要な理由を知ってるから。
日本語から「が」がなくなれば不便で仕方がない。
だからauto使いは大学デビューとか言われるのだ。未だコードネイティブではないのだ。
10年使ってからautoが必要かどうか考えろ。答えは明らかだ。
碌にコードを読んだことがない、書かない人が文法を変えたがるのだ。
外国人の日本語入門者が「は」と「が」が難しいからautoにしろ、どっちの意味かは読む人、聞く人が考えろと言ってるうなもの。
ひらがなとカタカナを統一しろとかね。日本人ならそうは思わない。日本語を使い続けて必要な理由を知ってるから。
日本語から「が」がなくなれば不便で仕方がない。
だからauto使いは大学デビューとか言われるのだ。未だコードネイティブではないのだ。
10年使ってからautoが必要かどうか考えろ。答えは明らかだ。
272デフォルトの名無しさん (ワッチョイ 6b15-OCcV)
2017/10/29(日) 07:32:07.72ID:m60zTw010 > 大量のC++を書いてきた人は今更シンタックスを変えようとは思わない。
これは嘘
autoだけでなくtrailing return typeやusing aliasなど
かゆいところにやっと手が届いたシンタックス変更は大歓迎している
C++11以後に拒否反応しまくって、未だにC++98のマゾプレーを続行中の変態は
頭固すぎだ
# 自分で言うのも何だが、俺に頭固いなんて言われるのは極端すぎだ
これは嘘
autoだけでなくtrailing return typeやusing aliasなど
かゆいところにやっと手が届いたシンタックス変更は大歓迎している
C++11以後に拒否反応しまくって、未だにC++98のマゾプレーを続行中の変態は
頭固すぎだ
# 自分で言うのも何だが、俺に頭固いなんて言われるのは極端すぎだ
273デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 07:55:51.29ID:Heo7FnD+0 >>270
藻前の呼びたかったassign()は実はFoo::assign()(基底クラスの方)だったかもしれないじゃん?
藻前の呼びたかったassign()は実はFoo::assign()(基底クラスの方)だったかもしれないじゃん?
274デフォルトの名無しさん (ワッチョイ 139d-xXVv)
2017/10/29(日) 08:02:49.06ID:5nFESEae0 ところでこれからC++を始めたいのだが、純粋にC++が始めたいのではなくてc言語の代わりとして
C++を使ってみたい。多少なりともC++の方が便利だろうとおもうから。一つ二つ制約があって
ROMが256バイトしかない。RAMが8Kしかない。こういう場合に今までROM48Kバイト、RAM8K
バイトでおさまっていたプログラムをC++で移植するのは余裕だろうか? それとも便利になる分
スペースがとられてRomエリアが少なすぎるってレベルだろうか?
C++を使ってみたい。多少なりともC++の方が便利だろうとおもうから。一つ二つ制約があって
ROMが256バイトしかない。RAMが8Kしかない。こういう場合に今までROM48Kバイト、RAM8K
バイトでおさまっていたプログラムをC++で移植するのは余裕だろうか? それとも便利になる分
スペースがとられてRomエリアが少なすぎるってレベルだろうか?
275デフォルトの名無しさん (ワッチョイ 9104-VtrM)
2017/10/29(日) 08:05:45.00ID:6IgW6Wrm0 アセンブリで書けるレベルじゃね?それ。
276デフォルトの名無しさん (ワッチョイ 1341-2BKa)
2017/10/29(日) 08:07:50.71ID:XRmGRjwZ0 >>271
要出典:auto使いは大学デビュー
ラムダ式を変数に入れたいときはどうやるの?
コンテナのイテレータを変数に入れたいときは型名全部書くの?
std::bindの戻り値を変数に入れたいときはどうするの?
何でもかんでもauto使うのはどうかと思うがこういう面倒なところはautoでいいんじゃね
要出典:auto使いは大学デビュー
ラムダ式を変数に入れたいときはどうやるの?
コンテナのイテレータを変数に入れたいときは型名全部書くの?
std::bindの戻り値を変数に入れたいときはどうするの?
何でもかんでもauto使うのはどうかと思うがこういう面倒なところはautoでいいんじゃね
277片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/29(日) 08:09:27.19ID:k1qoOab2d278デフォルトの名無しさん (ワッチョイ 138a-whYl)
2017/10/29(日) 08:10:20.13ID:XyYI0EpP0 cでもキツいな
279デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 08:14:51.32ID:Heo7FnD+0 多分printf()がリンクされたら死ぬレベル
280片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/29(日) 08:19:49.13ID:k1qoOab2d281デフォルトの名無しさん (ワッチョイ 1341-2BKa)
2017/10/29(日) 08:25:23.25ID:XRmGRjwZ0 >>274
ROMは256Kの誤記だとして
RAM8Kはきついな
マイコン向けの開発環境も無償版や評価版なんてのがあるから一回試した方がいいと思う
コンパイラのオプションで例外と実行時型情報はOFFにするのを忘れずに
C++のコンテナクラス(std::vectorやstd::string)はメモリ不足で使えなさそうだな
ROMは256Kの誤記だとして
RAM8Kはきついな
マイコン向けの開発環境も無償版や評価版なんてのがあるから一回試した方がいいと思う
コンパイラのオプションで例外と実行時型情報はOFFにするのを忘れずに
C++のコンテナクラス(std::vectorやstd::string)はメモリ不足で使えなさそうだな
282デフォルトの名無しさん (ワッチョイ 139d-xXVv)
2017/10/29(日) 08:51:05.52ID:5nFESEae0 ROMは256kの間違い。外部RAMは256kbある。(ただしSPIでアクセスするので遅い)
だから8kは純粋にワークとして使える。
8kのRAMがきついと思うのは何故?
C++もワークはスタックを使うと思うけど、プログラムの実行エリアとして例えばクラスインスタンスを
作るのにRAMを消費することになるんだろうか? 動的にインスタンスを作成するとそのクラスが大きいと
RAMエリア(mallocで確保してロードしたら、解放するまではRAMエリアを使う)を圧迫することになる。
ということはRAMをあまり消費しない手法ってあるんだろうか?
だから8kは純粋にワークとして使える。
8kのRAMがきついと思うのは何故?
C++もワークはスタックを使うと思うけど、プログラムの実行エリアとして例えばクラスインスタンスを
作るのにRAMを消費することになるんだろうか? 動的にインスタンスを作成するとそのクラスが大きいと
RAMエリア(mallocで確保してロードしたら、解放するまではRAMエリアを使う)を圧迫することになる。
ということはRAMをあまり消費しない手法ってあるんだろうか?
283デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 09:18:10.76ID:Heo7FnD+0 普通は処理系が要求するコード、CONSTデータ、、スタック、初期値付きデータ、BSSの各セクションを
プログラマーが明示的にリンカに指示して割り当てさせるんじゃね;;
これはCもC++も同じなのでCでのやり方を理解しているなんならC++でも同じようにやれば良い
(グローバルなオブジェクトの構築と破棄の手当てが追加になるだけぐらいしか違いが無い
プログラマーが明示的にリンカに指示して割り当てさせるんじゃね;;
これはCもC++も同じなのでCでのやり方を理解しているなんならC++でも同じようにやれば良い
(グローバルなオブジェクトの構築と破棄の手当てが追加になるだけぐらいしか違いが無い
284デフォルトの名無しさん (ワッチョイ 1341-2BKa)
2017/10/29(日) 09:30:39.20ID:XRmGRjwZ0 >>282
最適化切って動作確認したり、デバッグ用のコードを仕込んだりしてると8Kは意外とすぐに使いきれてしまう
当然プログラムの規模や書き方によるところだから必ず足りないわけではないけど
C++だから足りないというわけではない
元のプログラムがCで書かれてて8Kで動いてたならまぁ大丈夫か
最適化切って動作確認したり、デバッグ用のコードを仕込んだりしてると8Kは意外とすぐに使いきれてしまう
当然プログラムの規模や書き方によるところだから必ず足りないわけではないけど
C++だから足りないというわけではない
元のプログラムがCで書かれてて8Kで動いてたならまぁ大丈夫か
285デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 09:31:08.74ID:Heo7FnD+0 >>282
>8kのRAMがきついと思うのは何故?
全てはID:5nFESEae0が上記各セクションをROMやRAMにどのように割り付けようとしているのかにかかってゐるのだが、
仮にスタックと初期値つきデータとBSSを全部8 KBのRAMに割り付けた場合、
コード以外の全て(malloc()含む)のメモリ消費がトータルで8 KBに収まらねばならず、
メモリ不足のせいでやれることは相当にきびしくなるとおもー
>8kのRAMがきついと思うのは何故?
全てはID:5nFESEae0が上記各セクションをROMやRAMにどのように割り付けようとしているのかにかかってゐるのだが、
仮にスタックと初期値つきデータとBSSを全部8 KBのRAMに割り付けた場合、
コード以外の全て(malloc()含む)のメモリ消費がトータルで8 KBに収まらねばならず、
メモリ不足のせいでやれることは相当にきびしくなるとおもー
286デフォルトの名無しさん (ワッチョイ e983-nu9H)
2017/10/29(日) 09:38:54.44ID:0yKrkLYC0 ID:XRmGRjwZ0
> RAM8Kはきついな
> コンパイラのオプションで例外と実行時型情報はOFFにするのを忘れずに
> C++のコンテナクラス(std::vectorやstd::string)はメモリ不足で使えなさそうだな
こいつレベル低すぎだろ。ド素人にもほどがある。
完全に組み込み経験なしじゃねーか。学生じゃねーのか。
> RAM8Kはきついな
> コンパイラのオプションで例外と実行時型情報はOFFにするのを忘れずに
> C++のコンテナクラス(std::vectorやstd::string)はメモリ不足で使えなさそうだな
こいつレベル低すぎだろ。ド素人にもほどがある。
完全に組み込み経験なしじゃねーか。学生じゃねーのか。
287デフォルトの名無しさん (ワッチョイ 9104-VtrM)
2017/10/29(日) 09:49:26.98ID:6IgW6Wrm0 コンテナクラスの消費バイトは12バイト。だっけ?
288デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 09:56:55.29ID:Heo7FnD+0 sizeof(コンテナクラス)すればワカル、
ただしコンテナに要素の追加でmalloc()される分は別枠
ただしコンテナに要素の追加でmalloc()される分は別枠
289デフォルトの名無しさん (JP 0Hc5-xXVv)
2017/10/29(日) 10:05:31.40ID:NWVP0NdTH290デフォルトの名無しさん (ワッチョイ eb80-4ToH)
2017/10/29(日) 10:24:19.89ID:9Q+tOYh80 Microchip マイコン PIC24FJ128GA006-I/PT 16ビット RISC PIC24FJ,
32MHz, 128 kB フラッシュ, 8 kB RAM, 64-Pin
http://jp.rs-online.com/web/p/microcontrollers/6230897/
8KB RAM は、400円のPIC マイコンとかだろ
そもそも、C++ のコンパイラが無い
32MHz, 128 kB フラッシュ, 8 kB RAM, 64-Pin
http://jp.rs-online.com/web/p/microcontrollers/6230897/
8KB RAM は、400円のPIC マイコンとかだろ
そもそも、C++ のコンパイラが無い
291デフォルトの名無しさん (ワッチョイ 139d-xXVv)
2017/10/29(日) 10:29:34.45ID:5nFESEae0 コンパイラはありますよ。C/C++とうたってるので恐らくC++もできると思うが、、、
TIとかHewとか他にもKeilとか
TIとかHewとか他にもKeilとか
292デフォルトの名無しさん (ワッチョイ 139d-xXVv)
2017/10/29(日) 10:41:22.70ID:5nFESEae0 >グローバルなオブジェクトの構築と破棄の手当てが追加になるだけぐらいしか違いが無い
おお、心強いお言葉。
例えば
class MyClass
{
int buf[1000];
int no = 0;
void inputdisp(int aa){
sprintf(buf," aa=%d",aa);
}
};
int sub1()
{
MyClass aaa;
aaa.disp(333);
return 0;
}
こういう場合はaaaはbufは2000バイトのRAMを使うけれども、stackに確保するんだろうか?
aaa自体はrom上にできると考えていい?
それなら、cと混在で徐々にC++に変えていく程度でも問題ないのかなとは思っている。
おお、心強いお言葉。
例えば
class MyClass
{
int buf[1000];
int no = 0;
void inputdisp(int aa){
sprintf(buf," aa=%d",aa);
}
};
int sub1()
{
MyClass aaa;
aaa.disp(333);
return 0;
}
こういう場合はaaaはbufは2000バイトのRAMを使うけれども、stackに確保するんだろうか?
aaa自体はrom上にできると考えていい?
それなら、cと混在で徐々にC++に変えていく程度でも問題ないのかなとは思っている。
293デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 10:52:19.32ID:Heo7FnD+0294デフォルトの名無しさん (ワッチョイ 139d-xXVv)
2017/10/29(日) 11:05:38.47ID:5nFESEae0 動的にNewを使ってインスタンスを生成した場合には、コードは必然的にRam上に置かれる。しかしスタティックに
生成した場合は、Code部分は原理的にはRom上にも置くことができる。そういう機能があるかどうか?って質問。
生成した場合は、Code部分は原理的にはRom上にも置くことができる。そういう機能があるかどうか?って質問。
295デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 11:08:14.46ID:Heo7FnD+0296デフォルトの名無しさん (ワッチョイ a180-aATY)
2017/10/29(日) 11:14:29.67ID:jdBIz2nU0 >>292
aaaもbufも同じ場所。大抵のコンパイラでは同じアドレスを指す。C解るならclassをstructに置き換えて考えたらいい。それと一緒。
aaaもbufも同じ場所。大抵のコンパイラでは同じアドレスを指す。C解るならclassをstructに置き換えて考えたらいい。それと一緒。
297片山博文MZ ◆T6xkBnTXz7B0 (スフッ Sd33-+nyC)
2017/10/29(日) 11:15:45.86ID:k1qoOab2d operator newの再定義ね。
298デフォルトの名無しさん (ワッチョイ 13bd-01LR)
2017/10/29(日) 11:29:26.33ID:Heo7FnD+0 ていうか>>294ハ質問者本人かしつれいorz
>>292のMyClass::inputdisp(int aa)のコードは、名前が適当にマングルされて(*1)
void hoge(MyClass* this, int aa) // (1)
という2引数の関数としてコードセクションにコードが格納される、というのが真実(*2)(*3)
オブジェクトaaaを動的にNewを使ってインスタンスを生成しようがスタティックに生成しようが、
そんなこととは無関係に、aaa.inputdisp((int型データ))というメソッドの呼び出しは(1)の関数呼び出しにコンパイルされる
*1: ここでは簡単のため’hoge’という名前にマングルされたとしている。本当は引数の型や戻り値も情報として含む名前になるが省略
*2: C++の言語規格でそうせよ決まっているかどうかは知らないが、そう処理する処理系しか無いと思う
*3: コードセクションがROM上なのかRAM上なのかはプログラマーがコードセクションをどう割り付けたかによる
>>292のMyClass::inputdisp(int aa)のコードは、名前が適当にマングルされて(*1)
void hoge(MyClass* this, int aa) // (1)
という2引数の関数としてコードセクションにコードが格納される、というのが真実(*2)(*3)
オブジェクトaaaを動的にNewを使ってインスタンスを生成しようがスタティックに生成しようが、
そんなこととは無関係に、aaa.inputdisp((int型データ))というメソッドの呼び出しは(1)の関数呼び出しにコンパイルされる
*1: ここでは簡単のため’hoge’という名前にマングルされたとしている。本当は引数の型や戻り値も情報として含む名前になるが省略
*2: C++の言語規格でそうせよ決まっているかどうかは知らないが、そう処理する処理系しか無いと思う
*3: コードセクションがROM上なのかRAM上なのかはプログラマーがコードセクションをどう割り付けたかによる
299デフォルトの名無しさん (ワッチョイ 139d-xXVv)
2017/10/29(日) 12:14:39.69ID:5nFESEae0 >296
うろ覚えで使ってるが、
Section Type of Memory Section Type of Memory
.bss RAM
.stack RAM
.data RAM
.sysmem RAM
.text ROM これがコード部分
.その他 ROM
こういうのがある。
Hewの場合#pragumaでセクションを生成できたとおもうが、一般的に#pragma とかで割り当てできるんだろうか?
今回はTiのコンパイラを使う予定なので初めての試み。
多分
static Myclass aaa;
みたいにスタティックかなにかを冠して宣言すれば.textにコードは配置されると思うが、どうなんだろう。
スタティックなんだから原理的には配置はどうにでもなる筈。
うろ覚えで使ってるが、
Section Type of Memory Section Type of Memory
.bss RAM
.stack RAM
.data RAM
.sysmem RAM
.text ROM これがコード部分
.その他 ROM
こういうのがある。
Hewの場合#pragumaでセクションを生成できたとおもうが、一般的に#pragma とかで割り当てできるんだろうか?
今回はTiのコンパイラを使う予定なので初めての試み。
多分
static Myclass aaa;
みたいにスタティックかなにかを冠して宣言すれば.textにコードは配置されると思うが、どうなんだろう。
スタティックなんだから原理的には配置はどうにでもなる筈。
300デフォルトの名無しさん (ワッチョイ 139d-xXVv)
2017/10/29(日) 12:18:36.34ID:5nFESEae0 問題はスタティックにした場合, コードは.textに配置されるとしてもdataが.dataに配置されると非常にまずい。
スタックでやってもらえないと困る。
スタックでやってもらえないと困る。
301デフォルトの名無しさん (ブーイモ MM33-96Io)
2017/10/29(日) 12:34:41.62ID:n8H8yUIJM■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 高市首相の答弁書に「台湾有事答えない」と明記 存立危機発言当時 ★7 [蚤の市★]
- 最新版Z級クソ映画ランキングが決定! [牛丼★]
- 【STARTO ENTERTAINMENT】SUPER EIGHTの横山裕、フジ『ドッキリGP』ロケで全治2ヶ月の重傷 [Ailuropoda melanoleuca★]
- 「1800万円の売り上げゼロに…」中国インバウンドに特化の宿の今 ★2 [蚤の市★]
- 公用車カーナビのNHK受信料「全額免除を」 千葉市議会、国に制度創設求める意見書可決 [少考さん★]
- 【食】「シャウエッセンは焼くべからず」暗黙のルールを破り売上高過去最高…日本ハム社員たちが「夜味」にかけた情熱 [ぐれ★]
- 千晴のウンコ
- 死にたい
- 国民「物価高なんとかして」自民党「デフレ脱却!」
- 【朗報】南鳥島のレアアース、中国産の「20倍の純度」青山繁晴氏「日本は資源大国」日本復活のファンファーレが鳴り響く! [673057929]
- 月がきれいですね。
- NATOもレーダー照射問題で中国を批判wwwwww
