[過去ログ] 【初心者歓迎】C/C++室 Ver.103【環境依存OK】 (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
841(1): 2018/11/16(金)05:03 ID:qDPFPFK+(1) AAS
>2.この世の全てが無くなるとは思えない。質問が不適切。
質問の意図は
inline void debug_pulse(int no){ }はコードを生成しない。これは正しいか?
である。
質問の理解が不適切。
842: 2018/11/16(金)07:42 ID:PBHgKXBb(1) AAS
>>841
エラーになるのでコードは生成されません
843: 2018/11/16(金)08:49 ID:U1UWmjZG(1) AAS
mode の出所は? A)no の typo B)別途関数の外に居るし
844: 2018/11/16(金)19:06 ID:4cszXKPK(1) AAS
int mode;
void pulse(void);
int A0;
int A1;
int C5;
int F0;
845: 2018/11/17(土)10:49 ID:B4GISbTr(1/2) AAS
modeがどうかは質問の趣旨と関係ないのでどうでもいいが(modeがglobalとか適当に)
inline void debug_pulse(int no){
switch(mode){
case 0: pulse(A0); break;
case 1: pulse(A1); break;
case 2: pulse(C5); break;
case 3: pulse(F0); break;
省9
846(1): 2018/11/17(土)10:50 ID:B4GISbTr(2/2) AAS
ああ 2. で消える条件は
debug_pulse() を呼んでる部分が無いことが前提だから
2. 「消える」「消えない」どっちとも言えない
だな
847: 2018/11/17(土)12:25 ID:OvrLhogI(1) AAS
>>846
inlineなんで、消えるか消えないかはアドレス必要な操作をしてるかどうか
848: 2018/11/17(土)13:20 ID:yMNF1uQT(1) AAS
inlineをどう扱うかなんてコンパイラ次第
どんなコードが吐かれるかが知りたければ
吐かれたコードを見るのが一番
849: 2018/11/17(土)22:18 ID:PyYM1CbT(1) AAS
inline void debug_pulse(int no){
#if(DEBUG == 1)
switch(no){
case 0: pulse(0xA0); break;
case 1: pulse(0xA1); break;
case 2: pulse(0xC5); break;
case 3: pulse(0xF0); break;
省6
850: 2018/11/17(土)22:20 ID:/DEd7oJ8(1) AAS
そもそもpulseがなんなのかわからんから
なにが書いてあるのか意味不明
851: 2018/11/17(土)23:02 ID:cQE6WwU+(1) AAS
コンパイラのオプション指定は?
852(6): 2018/11/18(日)03:24 ID:P3SzQi6N(1/4) AAS
次スレからは、
【初心者歓迎】C/C++室 Ver.103【環境依存OK】 を、
【上級者用】C/C++室 Ver.104【環境依存OK】
にした方がいいな。
853: 2018/11/18(日)11:25 ID:sRdnUsGm(1/2) AAS
何で相談室の方行かないんだろう
854: 2018/11/18(日)13:06 ID:OtDWWVpG(1) AAS
いいかお前ら、これから>>852が理解できないことは一切書いちゃだめだぞ。
ここが初心者専用でなく初心者歓迎であってもだ。
回答するのはお前らだからな。
855(2): ◆QZaw55cn4c 2018/11/18(日)14:38 ID:KS5/UdBT(1/4) AAS
>>852
@すでに上級者スレはありますが?
Aそもそも上級者と初心者の境目をどう定義しますか?
856: 2018/11/18(日)14:47 ID:SB4p/OrB(1/3) AAS
本人の主観で良いでしょう
857(1): 852 2018/11/18(日)16:35 ID:P3SzQi6N(2/4) AAS
>>855
過去レスから、自ずと答えが出るだろ。
858: ◆QZaw55cn4c 2018/11/18(日)17:06 ID:KS5/UdBT(2/4) AAS
>>857
それは>>855Aの答えだけですね、@はどうですか?
859(1): 2018/11/18(日)19:08 ID:P3SzQi6N(3/4) AAS
くだらないないことを、グダグダ突っかかり続けるのが、5ch民のクセ。
860: ◆QZaw55cn4c 2018/11/18(日)19:17 ID:KS5/UdBT(3/4) AAS
>>859
>>852 の提案が一番くだらないのでは?
861: 2018/11/18(日)19:23 ID:SB4p/OrB(2/3) AAS
何がしたいんだ?煽りたいのか?
862: 2018/11/18(日)21:29 ID:NspDNQEU(1) AAS
>>852が初心者向けの回答すればそれで解決だろ。アホ草
863(1): 2018/11/18(日)21:35 ID:2nMU53A+(1) AAS
そもそも論言っていい?w
なんで初心者でも上級者でも質問したらきちんと回答してくれるこのスレがあるのに、自分が気に入らないからって勝手に新スレ作るの?
そういうのを躊躇なくやれちゃう人が本当に怖い・・・
864: 2018/11/18(日)21:41 ID:SB4p/OrB(3/3) AAS
議論したいなら、自治スレに移動してやってくれ
865: 2018/11/18(日)22:07 ID:sRdnUsGm(2/2) AAS
上級者?向けってこっちだと思ってた
C++相談室 part139
2chスレ:tech
866(1): ◆QZaw55cn4c 2018/11/18(日)22:09 ID:KS5/UdBT(4/4) AAS
>>863
そうそう、そうですよね
初心者には初心者のための回答がつき、上級者には上級者にふさわしい回答がつけば、それで必要にして十分ですよね
なんでスレを分ける必要があるのですか?>>852
867(1): 2018/11/18(日)23:53 ID:P3SzQi6N(4/4) AAS
今までの、他者排除姿勢から、よくも>>866が書けたもんだ。
868: 2018/11/19(月)00:02 ID:FLKvqXWs(1) AAS
他者排除だって?誰が?QZが?
被害妄想激しすぎるんじゃないか?
869: ◆QZaw55cn4c 2018/11/19(月)00:28 ID:MufxDZB0(1) AAS
>>867
>他者排除姿勢
とても興味があるのであえてお聞きしてもいいですか?
私のどういう点に「他者排除姿勢」を感じたのでしょうか
870: 2018/11/19(月)00:33 ID:w+8SUjt5(1) AAS
他所でやれよ(排他主義)
871: 2018/11/19(月)00:38 ID:on7lyeKV(1/2) AAS
荒らし始めたとき
872: 2018/11/19(月)01:30 ID:EqyITMeu(1/2) AAS
ひどい虫歯な排他主義の人
「歯ぁ、痛過ぎぃ〜」
873: 2018/11/19(月)02:44 ID:57YOX4Aq(1) AAS
日本人じゃないんだろこいつ
在だな
874: 2018/11/19(月)15:26 ID:3MOWhUti(1) AAS
#include <stdio.h>
int main() {
float f = 262143.98;
fprintf(stdout, "%f\n", f);
f += 0.01f;
fprintf(stdout, "%f\n", f);
f += 0.01f;
省6
875(1): 2018/11/19(月)15:38 ID:on7lyeKV(2/2) AAS
floatって有効桁数は6桁じゃなかった?
876: 2018/11/19(月)15:40 ID:oi0OLObs(1) AAS
オーバーフローじゃなくて
マシンイプシロンの問題
877: 2018/11/19(月)20:50 ID:8P0ZFwQc(1) AAS
>>875
規格では決まってなかったと思う
まあたいていIEEE754の単精度だけど
878(2): 2018/11/19(月)22:43 ID:dp3XdjsI(1) AAS
様々な処理系依存についてそれぞれ具体的に何に依存してるのかってどこで調べられますか?
ソフトを作って配布するにあたって、ユーザーの環境をwindows7以降のPCに限定するとして
ユーザー側の環境に依存するもの
ユーザー側の環境に依存するがwin7以降のPCでは共通なので実質非依存とみなせるもの
コンパイル側の環境に依存するのでコンパイルしてしまえば非依存とみなせるもの
に分けて調べたいです
879: 2018/11/19(月)22:57 ID:EqyITMeu(2/2) AAS
>>878
MSDN
880: 2018/11/20(火)06:11 ID:N6+XqoZ1(1) AAS
>>878
まとめて書いてある所なんか無いよ
普通はコンパイラの範疇なものは実行環境に依存しない
一緒に提供しない外部のコードを使う部分(DLL, API, ドライバ)は依存する
と思っておけば良いけど
環境を判断して動作を変えるコードもあるし
実行速度は当然環境に依存する
省4
881: 2018/11/20(火)10:23 ID:jmuJusIM(1) AAS
README (.txt) (.md) (.rst)
882(1): 2018/11/21(水)12:28 ID:kLl3Gqvz(1) AAS
某本で読んだんだけど、クラスの中にポインタ変数もたせる場合って、コピー禁止にするのが一般的?
コピーコンストラクタを書くのがめんどそうだし、そもそもクラスを代入やコピーをあんましないよね?
883(1): はちみつ餃子 ◆8X2XSCHEME 2018/11/21(水)12:44 ID:5XDVWHjZ(1/2) AAS
>>882
そのクラスがコピーできるようになっているべきかどうかは個別に判断すべき話で、クラスの性質による。
コピーできない (コピーすると不整合が起こる) ようなデザインならコピーするなって言うだけじゃなくて
コピー禁止 (コピーコンストラクタの削除) にしておいたほうがうっかりコピーしなくて安全だねってだけの話。
884(1): 2018/11/21(水)22:50 ID:QmHGv3o9(1) AAS
排他主義は当然
低学歴知恵遅れは板から排除するベキ
885(1): 2018/11/21(水)23:19 ID:xWgjQGqb(1/3) AAS
>>883
> そのクラスがコピーできるようになっているべきかどうかは個別に判断すべき話
これ、全く尤もだし大事な事だと思うんですけど、判断基準を学校や職場で教えてないんですかね?
メモリが少ない組み込み環境だと選択肢はあるけど、C++でアプリを組むような環境だと、
- シングルトンはコピーしない
- それ以外はコピアブル(ディープコピー)にする
一択だと思うんですが。
886: さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/21(水)23:22 ID:G5nou9W5(1) AAS
>>884
君の辞書には排他主義という単語があるのか?
887(1): 2018/11/21(水)23:42 ID:yscr9wE/(1) AAS
>クラスの中にポインタ変数もつ
これは、pimpl (pointer implement)デザインパターンだろ
pimpl インスタンスの遅延初期化だろ。
こういうのは普通コピーしないし、コピーするとインスタンスを共有して危険になるとか
遅延初期化するようなものは、非同期読み込みとか、何か失敗する可能性が高い、ヤバイもの
1回目は、ファイルから読み込んで、2回目は、キャッシュから読み込むとか、挙動が変わったり
pimpl を使っていれば、普通と違うから、ヤバイと思っておいた方がよい。
省1
888(3): はちみつ餃子 ◆8X2XSCHEME 2018/11/21(水)23:50 ID:5XDVWHjZ(2/2) AAS
>>885
原則としてはその意見は正しいと思う。
特別な理由がない限りコピーは出来るべきだ。
その上でコピー可能にするための手間と使い勝手のトレードオフ、
要するに「割に合うか」という判断は実務的なことだから、一律には言えないと思う。
コピー可能に出来るけど、コピーする箇所が一個もなかったわっていうような結末だって
有りうるだろうし。
省1
889: 2018/11/21(水)23:57 ID:xWgjQGqb(2/3) AAS
>>887
pimplはAPIと実装を切り離して抽象化するためのもんだから、遅延とかキャッシュとか
実装詳細が関係しちゃいけないんじゃないですかね。
例えばマルチエージェントシミュレーションとかで、個々のエンティティの実装をpimplで隠した上に、
エンティティの複製は普通にやりますし。
890: 2018/11/21(水)23:59 ID:xWgjQGqb(3/3) AAS
>>888
> コピーする箇所が一個もなかったわ
あっそうかっ
891(1): 2018/11/22(木)00:03 ID:hDud6tbH(1/3) AAS
>>888
> そういう見極めに簡単な基準を設けられるのなら苦労はないわ。
私は古い教育しか受けてないので、過去については全く同感なんですが、
最近はもっと抽象化してるんじゃないかな、と思ったんですよ。
892(2): 2018/11/22(木)00:06 ID:LhS8U5R1(1) AAS
今はmoveがあるからとりあえずコピー禁止で作るな。
複製したオブジェクトが必要になる機会はあんまりない気がする。
vectorに突っ込んで連続したメモリに割り当てたいときとかかな。
893: 2018/11/22(木)00:16 ID:hDud6tbH(2/3) AAS
>>892
read-copy-updateとか、マルチスレッディングで使うんですよ。
(スレッド間で同じ領域にアクセスすると、誰かが書き込むときにロックが掛かるから、
ポインタの参照先もコピーしてしまった方が良い)
894: 2018/11/22(木)00:23 ID:VnO3ZoaR(1) AAS
pimpl は、DI(dependency injection)でも使うか
895: 2018/11/22(木)00:35 ID:hDud6tbH(3/3) AAS
>>892
私も>>888で言われるまで気付かなかったんですけど、個々のエンティティはコピーしても
シミュレーション系全体をコピーする、とか、大きなオブジェクトをコピーするときって確かに無いですよね。
むしろ万一コードが走ったらレスポンスが遅くなるから禁止すべき。
896: 2018/11/23(金)18:17 ID:Fjl6cL2Z(1) AAS
でかいオブジェクトはコピーじゃなくてデータベースに入れてリビジョン管理するべきだよな
897(1): 2018/11/24(土)04:02 ID:sj/p1kLr(1) AAS
std::shared_ptr。
898(1): 2018/11/24(土)13:15 ID:CDKSSVF4(1/2) AAS
>>891
コピーコンストラクタって言語機能があるから勘違いしがちだけど
コピーってオブジェクト指向一般的に言えば全くもって汎用的な処理じゃないんだよね
むしろ無理にコピー可を要求するとおかしくなったりパフォーマンスに悪影響することの方が多いぐらいだ
だから、C++より進化したオブジェクト指向言語、例えばC#もJavaもコピーコンストラクタなんてサポートしてないだろ?
なんでまあ、基本的にはコピーはサポートしなくていい
そのクラスの要件としてコピーのサポートが必須だとはっきり分かったときだけサポートすりゃいい
899: ◆QZaw55cn4c 2018/11/24(土)14:34 ID:nrZVZwkF(1) AAS
>>898
>C++より進化したオブジェクト指向言語、例えばC#もJavaもコピーコンストラクタなんてサポートしてないだろ?
それはクラスは問答無用でヒープに置くことに統一した結果なのでは?
900: 2018/11/24(土)15:11 ID:CDKSSVF4(2/2) AAS
C#には構造体があるがそれもコピーコンストラクタなどサポートしてないね
オブジェクト指向にはほとんど不要だから
901: 2018/11/24(土)15:48 ID:3CbvFbkZ(1) AAS
IClonableが用意されているのはそれが必要だと判断されたからだわな
902: 2018/11/24(土)19:04 ID:gWlvrrPg(1) AAS
>>897
循環参照や並行処理や、今や制限しか思い浮かばない……
903: 2018/11/25(日)09:06 ID:lehzCciN(1/2) AAS
コピーコンストラクタなんて使ったことないよ
関数の引数も構造体はポインタで渡すべきだし、関数からの返り値も構造体で返すべきではない
あんなのは使うべきではない
904: 2018/11/25(日)09:07 ID:lehzCciN(2/2) AAS
=はもちろん実装するけどね
905(1): 2018/11/25(日)18:17 ID:nhPKo8Z8(1) AAS
便利なのに:-P
906(1): 2018/11/26(月)03:48 ID:bwBfDzyf(1) AAS
あるクラスのオブジェクトを静的/動的に確保した場合の互いのメンバ関数処理速度の差ってどれくらいなもんですかね
処理の規模にもよるのですか?
907: 2018/11/26(月)06:54 ID:KQ12hvHn(1) AAS
ほぼ無いと思って良い。
908: 2018/11/27(火)09:16 ID:SZiCwtOh(1) AAS
今プログラミング言語C++4第四版読んでるのですが、中級者なのですが1ページから読んでます
テンプレートはあまり使ったことがなく、テンプレートの章を読んでいるのですが理解出来ているのか出来ていないのか分かりません
皆さんこの本はどんな感じで読みましたか?
909(1): 2018/11/27(火)09:40 ID:jIxWA8zR(1) AAS
テンプレートは大分前に読んだが、ぜんぜんスマートだとは思わんかったしプログラムもでかくなりそうだったし
くだらねえと思って、読むのやめたよ。 別に使わなくてもプログラム出来るしな
910(1): 2018/11/27(火)10:30 ID:90f/RKlc(1) AAS
ID:lehzCciN
ID:jIxWA8zR
ちょっとだまってて
911(2): 2018/11/27(火)17:54 ID:7Rl1V70s(1/3) AAS
テンプレートは書くのはちょっと難しいというかアレだが
使うのは簡単だから、まずstd::vectorとか使ってみれば?便利だから
使い方が分かれば作り方もわかるようになるだろう
あとコピーの話でもめてたようだが、オブジェクトのコピーはC++の特徴だからなぁ
C言語からのもので、構造体が値型と同じようにコピーできるっていう
そのおかげでスタックにオブジェクトを確保してRAIIが出来るまぁこれも特徴的だわ
一方で配列が=でコピーできないのもC言語からのもので
省2
912: 2018/11/27(火)18:01 ID:7Rl1V70s(2/3) AAS
もしC言語の構造体が配列の仕様と同じように
アクセスしようとするとポインタに格下げになってコピーできない仕様だったのなら
C++のクラスはもうちょっとモダンな仕様になってたかもしれないよね
値渡し出来ないからコピーの事を考えなくてもよいし
GCないからキツイか
913: 2018/11/27(火)19:03 ID:NSs5prW8(1) AAS
>>911
> 使い方が分かれば作り方もわかるようになるだろう
コンパイラの使い方が分かっても作り方が分かるやつはそんなに多くないが…
914: 2018/11/27(火)19:33 ID:7Rl1V70s(3/3) AAS
その場合でも、例えばC言語のコンパイラを作りたいとき
C言語の使い方を理解せずにC言語のコンパイラを作るより
C言語の使い方を学習してからC言語のコンパイラを作る方が
賢明だろ
915(1): ◆QZaw55cn4c 2018/11/27(火)20:17 ID:X/MEoliS(1/4) AAS
>>906
性的・童貞的の差異よりも仮性・真性の差異を問題にすべきかと
916: ◆QZaw55cn4c 2018/11/27(火)20:18 ID:X/MEoliS(2/4) AAS
>>909
lisp のマクロとC++のテンプレートとは、どっちの方がイケてますか?
917(2): ◆QZaw55cn4c 2018/11/27(火)20:18 ID:X/MEoliS(3/4) AAS
>>911
>配列が=でコピーできないのもC言語からのもので
私はときどき夢想します、配列が=でコピーできたとしたら、どんな世界観がふりかかってくるのでしょうか?
918(1): 2018/11/27(火)20:20 ID:8XUiQDZN(1) AAS
テンプレートはヘッダと分けて書けないのが嫌い
919: さまよえる蟻人間 ◆T6xkBnTXz7B0 2018/11/27(火)20:25 ID:Caq1Rx+X(1) AAS
>>917
もしそうなら、配列のサイズの情報が関数プロトタイプに付属していただろう。
920: ◆QZaw55cn4c 2018/11/27(火)21:04 ID:X/MEoliS(4/4) AAS
>>915
訂正します
静的・動的の差異よりも仮想か非仮想かを問題にすべきかと思います
921: 2018/11/27(火)21:06 ID:iQ+6kMZ3(1) AAS
>>917
文字列が使えますよ
上下前次1-新書関写板覧索設栞歴
あと 81 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.021s