[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
453(1): 2017/02/20(月)01:05 ID:aWzwD2VT(1) AAS
>>452
ピタゴラスイッチでバブルソートやクイックソートの概念をグラフィカルに紹介してたよ。
それはさておき、本屋の店頭でアルゴリズムとかデータ構造とかがタイトルに含まれる本をパラパラめくって分かり易いのを探すといいかと思う。
454(2): 2017/02/21(火)00:15 ID:OFTvUoLj(1/3) AAS
とあるOSSをとあるシステムに移植していて、
Intel(2013)やGNU(4.9系)ではコンパイルできるのに
そのシステム専用コンパイラではコンパイルできずエラーになります。
ソースコードやヘッダファイルを修正すれば通るだろうというのは経験的にわかっているのですが
どこを修正したらよいかというのを見つけ方がわからないのですが見つけ方のコツみたいなのはあるのでしょうか?
455: 2017/02/21(火)00:32 ID:fcoMqi2n(1) AAS
エラーメッセージの意味を考えろ
456(2): 2017/02/21(火)01:18 ID:9fQxfYbZ(1/2) AAS
>>454
エラーメッセージを見ないことには回答のしようがないと思うぞ
まぁ、専用のコンパイラという言い回しから察するに、C++03程度しかサポートしていない古いコンパイラでも使ってるんじゃないか?
エラーが出ている行の周辺でC++11以降の言語機能か、ライブラリでも使ってんじゃね?
457(1): 2017/02/21(火)01:18 ID:bFUDo/lz(1/2) AAS
>>454
ともかく、
そのシステム専用コンパイラ提供しているところに、世界標準のIntel(2013)やGNU(4.9系)ではコンパイル
出来るのにお前のものではできないから出来るようにしたコンパイラをよこせと激しくクレーム
458: 2017/02/21(火)01:32 ID:bFUDo/lz(2/2) AAS
>>456
C++11いっぱいのコードをC++03に修正するって大変そうだな
459(2): 2017/02/21(火)06:31 ID:OFTvUoLj(2/3) AAS
>>456
>>457
メッセージは
「オーバーロードされた関数"HOGE"のインスタンスが引数リストと一致しません。」
みたいな感じです
一応C++11準拠でGNU4.9一部互換とされてるコンパイラですが。。。
460(2): 2017/02/21(火)08:12 ID:9fQxfYbZ(2/2) AAS
>>459
HOGEが想定している引数型と実際に渡している引数の型を確認
違うやつが犯人
これ以上は情報少なすぎてわからん
461: 2017/02/21(火)15:33 ID:rWOcc73c(1) AAS
一般論としてどういうことに注意したらいいですかって質問じゃなくて、具体的に解決してもらいたいってことなのかよw
462: 2017/02/21(火)22:19 ID:OFTvUoLj(3/3) AAS
>>460
intelコンパイラで作ったオブジェクトをnmコマンドで中見て
こうあるべきという形がわかったんであとは頑張ってみる
463: 2017/02/21(火)22:24 ID:qEEiXXQS(1) AAS
HOGEの中にHAGEが紛れ込んでるんだな
464: 2017/02/22(水)07:28 ID:F7TE97aZ(1) AAS
>>453
有難うございます。
田舎ですので大きな書店には距離があります
が、行ってみます。
465(1): 2017/02/22(水)11:11 ID:T1tKwjPz(1/2) AAS
>>459
テンプレートが悪さしてるか const の取りこぼしかデフォルト引数のミスが起きているとエスパー
466: [sega] 2017/02/22(水)19:03 ID:7bpb3LbA(1) AAS
printf("%s",buf);
と
fputs(buf,stdout);
どっちが好き?
467(1): 2017/02/22(水)19:20 ID:JmFr9wbV(1) AAS
違う処理のコードを並べてどっちと言われても
468: 2017/02/22(水)19:49 ID:OuXxGo6B(1) AAS
>>467みたいな人が居るのでprintfかな
469(1): 2017/02/22(水)20:00 ID:G8P7P0/x(1) AAS
どっちも最後に使ったの20年ほど前かな
470: 2017/02/22(水)21:09 ID:T1tKwjPz(2/2) AAS
puts とか使ったことないわ
471: 2017/02/22(水)21:30 ID:Z0Pf8P/J(1) AAS
>>469
ログ出力・エラー出力がメインでstdoutはあんまり使わないよな
472(1): 2017/02/22(水)21:36 ID:3nEefUGO(1/2) AAS
putsは改行してくれるんで好きだな。fputsも。
473(1): 片山博文MZ ◆T6xkBnTXz7B0 2017/02/22(水)21:39 ID:mKcPOHkg(1) AAS
>>472
fputsは改行を追加しない
474: 2017/02/22(水)21:51 ID:3nEefUGO(2/2) AAS
>>473
あ そうだった。 すまん
475: 2017/02/23(木)00:12 ID:oHheANLP(1) AAS
細かいのを大量に出したいときはprintfは遅い
476(1): 2017/02/23(木)18:17 ID:2nyak89s(1/2) AAS
class CL{
CL(int _d, string _s) : d(_d), s(_s)
{
}
public:
int d;
string s;
};
int _tmain(int argc, _TCHAR* argv[])
{
省1
477: 2017/02/23(木)18:23 ID:sZtROie8(1) AAS
>>476
こんすとらくたがprivateだから
478: 2017/02/23(木)18:23 ID:2nyak89s(2/2) AAS
そういうことかあ
あざす
479(1): 2017/02/23(木)21:15 ID:JF3nU8GT(1/2) AAS
生成出来ないクラスってやつね。
480: 2017/02/23(木)21:50 ID:33+Wu0JT(1) AAS
>>479
friend なクラスからしか生成しないようにするとかはあるね
481: 2017/02/23(木)21:52 ID:JF3nU8GT(2/2) AAS
はい そゆ事。
482: 2017/02/23(木)21:53 ID:0FbQfq3V(1) AAS
staticメソッドで生成するって形の時に使うことが多い
singletonとか
483: 2017/02/23(木)22:20 ID:v0zRNZ3l(1) AAS
ctorはpri.でメンバーはpub.って
どういうことなんだ?
484: 2017/02/23(木)22:26 ID:I6Uc1mEc(1) AAS
一つ前のレスも読めない文盲
485: 2017/02/23(木)22:44 ID:SD8t1ALL(1) AAS
質問
C/C++でランタイムで現在のメモリの状態
とくにプロセスが使える余っているメモリの量って調べ方はありますか?
486: 2017/02/24(金)08:45 ID:SswDvM4l(1) AAS
環境すら書かないと言うことは
(実質)環境非依存での方法を聞いてるんだろうな?
487: 2017/02/24(金)08:54 ID:See/JzpM(1/5) AAS
そんなもん無いけどな
488(2): 2017/02/24(金)09:53 ID:0sr6h+Re(1) AAS
失敗するまでmallocやnewを繰り返せばええんや
489: 2017/02/24(金)10:43 ID:See/JzpM(2/5) AAS
>>488
Linuxじゃ失敗しないよ
490: 2017/02/24(金)10:53 ID:See/JzpM(3/5) AAS
もたろん割り当てるアドレス空間自体が足りなくなったとか、予め上限を設定しておいたとかいうケースは覗いてな
491(1): 2017/02/24(金)11:09 ID:9xRtAprE(1/2) AAS
16byteのメモリを積んだコンピュータで32byteのメモリ確保したら失敗するよね。
それはわかる。
逆に16byteのメモリを積んだコンピュータで7byteのメモリを二回確保して最初の7byteを開放した後に8byteのメモリを確保したら失敗するの?
492: 2017/02/24(金)11:41 ID:KhjrQy0g(1/2) AAS
基本的にでっかくメモリ確保というプログラムは作った事がないな。
今はSTLでほげほげ追加してくイメージ。
493(1): 2017/02/24(金)11:47 ID:See/JzpM(4/5) AAS
>>491
>16byteのメモリを積んだコンピュータで32byteのメモリ確保したら失敗するよね。
そうとは限らない。一般的なLnuxの環境依存ではmallocを搭載メモリ以上行っても失敗しない
swap含めて1GBしか積んでいない環境で2GB分malloc可能。確保した領域に書き込んだタイミングで記憶する領域が足りなくなったら色々なプロセスが殺される。oom killerと言われてるもの。
>
逆に16byteのメモリを積んだコンピュータで7byteのメモリを二回確保して最初の7byteを開放した後に8byteのメモリを確保したら失敗するの?
実装による。現代的なコンピューターではページ単位(4KB)とかでカーネルからプロセスへすきなアドレスへメモリを割り当てられるから物理的なアドレスが連続している必要はない。
プロセス内に連続したアドレス空間が残っていない場合は失敗する
494: 2017/02/24(金)11:52 ID:NAh96dM2(1) AAS
仮想メモリというしくみで色々やってくれるようになって
キャパの限界付近ではややこしくなった印象
495: 2017/02/24(金)12:48 ID:KhjrQy0g(2/2) AAS
家鯖は6G積んでるけどそれぐらいは行けるね。
てかkvmやってると、9Gコミットされてるもん。
496: 2017/02/24(金)15:10 ID:CcmE3pWB(1) AAS
>>488
それスワップエリアのサイズ計ってるだけ
497: 2017/02/24(金)15:25 ID:nwaeFCKh(1/2) AAS
winならGetProcessMemoryInfoなど
498(1): 2017/02/24(金)17:26 ID:9xRtAprE(2/2) AAS
>>493
> 物理的なアドレスが連続している必要はない
なるほど、長年の疑問が解消した。
493の読解力に感謝。
499: 2017/02/24(金)18:02 ID:See/JzpM(5/5) AAS
>>498
望む答えだったみたいで良かったわ
熱があって若干朦朧とした頭で読み返さずに書き込んだから今読み返すと誤字とか予測変換で要らない単語入ってたり(一般的なLinux環境)とか、カッコの位置が違う(4KBとかの部分)とかあったけど。
500: 2017/02/24(金)18:52 ID:dfRROZm/(1) AAS
環境依存ならPostMessageのエラーコードかな
俺はあんま理解してないけど
501: 2017/02/24(金)19:06 ID:+aOqx8nq(1) AAS
Win32なら信頼のPostMessageだな
502: ◆QZaw55cn4c 2017/02/24(金)22:16 ID:4ewDjGBZ(1) AAS
またその話題ですか‥
503(1): 2017/02/24(金)23:03 ID:TLhS+9k8(1) AAS
はよ10年前のソース出せよ
504(1): 2017/02/24(金)23:06 ID:nwaeFCKh(2/2) AAS
画像リンク[jpg]:i.imgur.com
505: 2017/02/25(土)07:21 ID:98TUEskp(1) AAS
なんで2分ちょいで出てくるかね。
506: 2017/02/25(土)08:14 ID:QoR/O5Qa(1) AAS
自演
507: 504 2017/02/25(土)08:21 ID:Jm21gNIW(1) AAS
>>503 ≠ >>504 だ。すまんなw
508: 2017/02/26(日)18:42 ID:stmjd5mD(1) AAS
味噌県のクセにコーミソース以外のソースを使う非国民は去れ
509: 2017/03/06(月)07:57 ID:NqblWJNK(1/2) AAS
#define ChannelBlend_SoftLight(A,B) ((uint8)((B < 128)?(2*((A>>1)+64))*((float)B/255):(255-(2*(255-((A>>1)+64))*(float)(255-B)/255))))
このマクロの
(2*((A>>1)+64))
この部分なんですが
なんで(A+128)じゃないんですかね?
510: 2017/03/06(月)08:21 ID:1XvIZqGa(1) AAS
最初の人がコピペで作ったんでしょ。+128に定義し直してるのもあるよ
511: 2017/03/06(月)08:30 ID:cJfBjMIV(1) AAS
Aが奇数のときの動作が違うね
512: 2017/03/06(月)10:33 ID:NqblWJNK(2/2) AAS
A、Bにはuint8を想定してますから、一瞬オーバーフローの関係かなとも思いましたが
そんなことはなく、特に深い意味はなさそうですね
ありがとうございます
513: 2017/03/13(月)00:19 ID:ZWBqluXH(1) AAS
仮想関数をオーバーライドするときはどう書くのがいい作法?
void vf()
virtual void vf()
virtual void vf() override
void vf() override
514: 2017/03/13(月)06:06 ID:IkDDkkqX(1) AAS
ハゲ先生によると最後の void vf() override が良いみたい。
『プログラミング言語C++ 第4版』p.592
加えてoverride指定の不整合をチェックするコンパイラオプションだね。
GCCのVersion 5から使える -Wsuggest-override とか。
他のコンパイラについては知らん。
515: 2017/03/13(月)10:43 ID:Kr7xjXLG(1) AAS
デストラクターに付けてる人はあんま見たこと無いな
class Derived : Base {
public:
~Derived() override {}
};
516: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/13(月)20:30 ID:VNPYsRzK(1/2) AAS
Bcc55でtypeofを実現するのは不可能なのかな?
517: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/13(月)20:57 ID:VNPYsRzK(2/2) AAS
古いコンパイラを使ってる人居る?
コンパイラの名前教えて下さい。
518: 2017/03/14(火)23:30 ID:wzywZVIy(1) AAS
老人がカセットテープデッキ求めたり
熟女モノのエロ本()を求めるような感じ?
519: 2017/03/15(水)01:04 ID:R2Ueow1p(1) AAS
古いコンパイラと自覚しつつも使ってるような人はこのスレには来ないだろ
時代遅れの遺物の話じゃ通じないし
520: 2017/03/17(金)11:46 ID:pwo5j4El(1) AAS
何でA、Bを()しないんだ?
521: 2017/03/25(土)21:37 ID:IRaGixDk(1) AAS
いまだに関数マクロ使ってるようでは
()したところで五十歩百歩
522: 2017/03/25(土)22:37 ID:9zWIhzFx(1) AAS
>>460
>>465
宣言とかいろいろ確認してやっぱソースはおかしくないよねってことで
サポートに調べてもらったら理由はわからないけど正しく動作する修正方法がわかったって連絡があって
最終的には詳細は書けないけどコンパイラのバグだった
523: 2017/03/26(日)08:58 ID:4rESVRzB(1) AAS
ここはお前の日記を垂れる場所じゃない
「サポートによるとコンパイラのバグだった」で済むのに
アレやってコレやってを書くな低能
524: 2017/03/27(月)10:03 ID:wSWIgauQ(1) AAS
事後報告あると参考になっていいんだけどな
今回は本人以外に状況がわからないから事後報告されてもw
525(2): 2017/03/30(木)03:06 ID:6sTQLdA2(1) AAS
外部リンク:codepad.org
ポインタをメンバに持たせた場合のget/setの書き方が分かりません
getの方は、ポインタを返すときに返した先で値を変えられないようにconstを付けたのですが、
sizePlus10のような関数を呼びたい場合に、const_castを付けて呼ぶことになってしまいました
値の変更をするのでsetを通してやるのが良いと思うのですが、何か良い書き方ありますか?
また、setの方は、一括で設定させることはできるのですが、
data->id、data->sizeの値を個別に設定したい場合、何か良い書き方はありますか?
コメントの部分のようにsetメンバ関数を何個も書く方法しか思いつきません
526(1): 2017/03/30(木)07:50 ID:GtG5BmiK(1) AAS
getDataの結果を修正したいのだから
杓子定規にgetDataの戻りにconst付けるのを止めればいいのではないか
そう言えばC++17(ドラフト)もstring::dataの戻りが非constに修正されたような
527(1): 2017/03/30(木)08:08 ID:KJlpKUaR(1) AAS
memcpy w
528(2): 2017/03/30(木)10:48 ID:JHpE2Dpf(1) AAS
>>525
一般論として形でただ覚えるのではなくて意味を理解しよう
理解があやしいから設計の一貫性がなく混乱してるようにみえる
・Dataをポインタで所有するのはなぜ
・ゲッター/セッターを使ってアクセスするのはなぜ
・ゲッターで返す値にconstをつけるのはなぜ
・sizePlus10がData*を受けとるのはなぜ
MyClassの設計方針にあわせるならsizePlus10をDataではなくMyClassを受けとるようにして
void sizePlus10(MyClass & mc)
{
省12
529(4): 2017/03/30(木)20:11 ID:irpIFLVN(1) AAS
>>528
おまえは質問の意図を理解しよう
>>525
そのsetgetでいいんじゃない?ただそのgetは俺だったらreferにするな
ついでにsetget両方使えるようにdata* operator->()みたいなの実装かな。というかむしろそっちでアクセスする方向にするな
あとはattachdetach作っておいてm_dataを置換できるにようにしちゃうな
その手のスマートポインタは至るとこで使われてるからこんなとこで聞かずにどっかのライブラリの参考にしたら?
メンバのコピーはpragma pack1でstructしておいてmemcpy
530: 2017/03/30(木)23:27 ID:O3+3nsIM(1) AAS
>>529
>メンバのコピーはpragma pack1でstructしておいてmemcpy
それをすると何がいいことあるのか?
531(1): 2017/03/30(木)23:45 ID:s+CP+YQd(1) AAS
こういえクソみたいな方法を自慢気に語り出す奴が居るところかC++の最もクソな所だよね
532(1): 片山博文MZ ◆T6xkBnTXz7B0 2017/03/30(木)23:51 ID:2hi+y029(1) AAS
デフォルトコピーコンストラクターとか構造体代入とか知らないんだろう。
533: 2017/03/31(金)00:14 ID:5j4NF4+Z(1) AAS
>>532
>構造体代入とか知らないんだろう
ほうほう、それは何ですか?
534: 2017/03/31(金)01:59 ID:OFYzpq31(1) AAS
やべえなおい糞コードの臭いがプンプンしやがるぜ
535: 2017/03/31(金)02:09 ID:DQgqVTGo(1) AAS
>>526-529
ありがとうございます
今まではとりあえずget/setを書いてgetにはconstを付けとけば良いみたいな認識でしたが、
想定されるクラスの使われ方に合わせて適宜変更するべきでした
MyClassのようなget/setの分け方をすると、
sizePlus10のような関数やsetで不便になってしまうので、
constを付けないget/set共用のものにしてそれを通してアクセスさせるのが適切でした
( getData()でアクセスする場合、Data * const getData() const { /**/ } みたいな )
とても参考になりました
536(1): 2017/03/31(金)11:52 ID:xItn/dk+(1) AAS
>>531
くそじゃない方法をおしえて
537: 2017/03/31(金)12:09 ID:c13jjk6+(1) AAS
C#じゃないからないでしょ
538: 2017/03/31(金)13:26 ID:CbPadW0u(1) AAS
>>536
コピーは=使え
というだけの話
539: 2017/03/31(金)13:38 ID:2wgHKgmk(1) AAS
>>529
> メンバのコピーはpragma pack1でstructしておいてmemcpy
これ俺も理由知りたい
540(1): 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)17:24 ID:tvggMnLQ(1/6) AAS
typedef struct MY_STRUCT
{
int ch;
} MY_STRUCT;
MY_STRUCT a,b;
a.ch = 0;
b = a; //代入できる
541: 2017/03/31(金)19:17 ID:Xv9Etv1i(1) AAS
>>529
> おまえは質問の意図を理解しよう
なんか無駄に上から目線だなぁ
って思ったら
> メンバのコピーはpragma pack1でstructしておいてmemcpy
単なる老害だったでござる
542: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:19 ID:tvggMnLQ(2/6) AAS
構造体の代入ができなかったのは大昔のことだ。
543(2): ◆QZaw55cn4c 2017/03/31(金)19:35 ID:BClOXWeK(1) AAS
>>540
それ,K&R1 から堕落したよね
544: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:40 ID:tvggMnLQ(3/6) AAS
構造体定義を#include <pshpack1.h>と#include <poppack.h>で囲むのは、スピードよりもメモリー効率を優先するときにする。
545: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:44 ID:tvggMnLQ(4/6) AAS
あるいは構造体のレイアウトを分かりやすくするときにパッキングを指定する。
546(1): 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:46 ID:tvggMnLQ(5/6) AAS
>>543
堕落ではない。進歩だ。
547: 2017/03/31(金)19:49 ID:RKtYGe+y(1) AAS
> スピードよりもメモリー効率を優先するときにする
20年くらい前まではそういう老人もいたね
今はメモリレイアウトを固定したい時にしか使わないけど
548: 片山博文MZ ◆T6xkBnTXz7B0 2017/03/31(金)19:58 ID:tvggMnLQ(6/6) AAS
#pragma 直接指定は礼儀が悪い、昔のやり方だ。
549: 2017/04/01(土)02:25 ID:m99QLuku(1) AAS
メモリ効率だけの問題なら大抵の場合は順番入れ替えるだけで問題ないしな
550(2): ◆QZaw55cn4c 2017/04/01(土)07:47 ID:1ZzXEpHO(1/2) AAS
>>546
サイズが無限にのびるかもしれないものをコピーするなんてだめだよ
昔はね,構造体はポインタを介してしかつかえなかったんだよ
551(1): 2017/04/01(土)08:31 ID:AOt54aKT(1) AAS
そうそう
スタックに自動変数とかも言語道断
全部staticじゃなきゃね
552(1): ◆QZaw55cn4c 2017/04/01(土)13:26 ID:1ZzXEpHO(2/2) AAS
>>551
スタックに自動変数はあたりまえだよ‥static おじさん,じゃないつもりなんだが‥
構造体はポインタで扱うべきもので,実体をコピーするのはなるたけ避けたいね
C++ では void f(const C &arg) って,可能ならば const と参照の縛りをできるだけいれるよね,余計なコンストラクタを走らせないために
K&R1 は教育的な配慮に優れた実装だと思うんだ‥
上下前次1-新書関写板覧索設栞歴
あと 450 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.031s