[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
1-

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
403: 2017/02/11(土)18:27 ID:2x1BPms4(1/2) AAS
っくっだらないとこでも叩いておかないと精神の安定が保てない病気
404
(1): 2017/02/11(土)18:51 ID:jl0P82O4(1) AAS
インデントや{}のスペース・改行でも自分のやり方と違うと喚きそうだなw
405: 2017/02/11(土)19:53 ID:7HNC8OW9(1) AAS
>>404
違和感がでるよね。
会社でこれがうちのスタイルって強制され、それになじむと
そうじゃないスタイルのものは気持ち悪いって感じるようになった

>for(i=0 ; i <100000000 ; i++);
最近のコンパイラはまじめにやらないで、コンパイル時にiは使ってないあるね
処理省くニダってして実行コード生成してなさそうな気がするが。
406: 2017/02/11(土)19:59 ID:nnf0vKBy(1) AAS
K&R2 あたりにあわせておけば問題ないのでは?
というか,K&R2 から大幅に変えさせられるのは苦痛だな
407
(1): 2017/02/11(土)21:18 ID:vquAI+Jk(1) AAS
21世紀にもなってK&Rとか何の冗談
変化が苦痛な老人はすっこんでて
408: 2017/02/11(土)21:22 ID:e+WRwiZx(1) AAS
2chスレ:tech
409: 2017/02/11(土)21:51 ID:o1zrWG0U(2/2) AAS
21世紀に相応しいスタイルを是非教えてくれ
410
(1): 2017/02/11(土)22:42 ID:2x1BPms4(2/2) AAS
可能な限りC/C++使わない
それが21世紀スタイル
411: 2017/02/11(土)22:58 ID:nOWXV3w9(1) AAS
>>410
おいおい、でも、それが正しいな。
412: 2017/02/12(日)02:53 ID:guRObziH(1) AAS
正しいけど"可能な限り"の範囲がまだまだ足りない
組み込みの世界はC言語が強過ぎて未だにC++すら使えない環境がざらにあるしな
413
(1): 2017/02/12(日)08:33 ID:XNCDxJ48(1/3) AAS
>>407
C/C++ くらいなら,K&R2 に準拠にさせてよー C#, Java も,とはいわないからさー
414
(1): 2017/02/12(日)08:43 ID:MRPxQTsD(1) AAS
>>413
C++を入れるなよ
415: 2017/02/12(日)10:10 ID:nF2JpTw9(1) AAS
結局C言語で全て済んでしまうからね。他は趣味。はっきりわかんだね
416: 2017/02/12(日)14:01 ID:XNCDxJ48(2/3) AAS
>>414
いっしょだよ,C++ も普通に K&R2 に似せて書くのが一番いい
417
(1): 2017/02/12(日)15:47 ID:CF268nsq(1) AAS
>>402 の「ブロック先頭で変数を定義するのは時代遅れ」ていう
指摘を受けての流れじゃないかな。

最初の使用の直前まで変数定義を遅らせることができる、
というC++での改良や、それを取り込んだC99以降で
わざわざK&R2版の書き方に制限されるのは困るという話。

おそらく、K&R2に似たスタイルが良いという主張も
「新しく追加された便利機能は使った上でK&R風のスタイル」
という意図なんだと思う。
418: 2017/02/12(日)15:59 ID:rZ/K+l3Q(1) AAS
>>400はiの宣言を先に、tよりも先にすることで、何を試したのかってのをわかりやすくしてんだろ
K&Rなんかにこだわるよりもこういうソースの方がいいわ
419: 2017/02/12(日)17:25 ID:XNCDxJ48(3/3) AAS
>>417
当然だ
420: 2017/02/13(月)00:11 ID:ebN6PGVD(1) AAS
使う直前に変数を宣言してるとたまにgoto出来ないerrorが出るのが面倒くさい
421: 2017/02/13(月)11:51 ID:M86uydzz(1) AAS
ブロックの違う同名変数の取り違えでトラブってるのを見てから
宣言位置が不揃いなのもよくないと思うようになった
422: 2017/02/14(火)01:24 ID:xlM9Sf4d(1) AAS
それは宣言位置の問題じゃなくて、1ブロックが大き過ぎることが原因じゃないか?
423
(1): 2017/02/14(火)08:51 ID:SrPWZnE2(1) AAS
スコープ違う同名の変数を書いたら間違えた
 ↓
宣言位置をスコープの先頭に揃えておけば俺はきっと気づけたんだ!

これがバカの思考
424: 2017/02/14(火)09:10 ID:MfKEp5BT(1/2) AAS
お前等が宣言位置を先頭に揃えておかなかったから俺が間違えたんだ

とまでいかなければまだ許せる。
425: 2017/02/14(火)09:11 ID:H0Zx0irg(1/2) AAS
スコープ違う同名の変数を書いたら間違えた
 ↓
次から気をつけよう!
 ↓
またミス

>>423はこのタイプ
426: 2017/02/14(火)09:16 ID:MfKEp5BT(2/2) AAS
423じゃないが間違えたことないな
どうやったら間違えるのか教えて欲しいくらい
427: 2017/02/14(火)09:25 ID:he6YB8dM(1) AAS
多分ブロックごとコピペしてたまたまエラーが出なかったんだろ
428: 2017/02/14(火)09:37 ID:tRUBGDEd(1) AAS
世の中には1関数が1000行を超える糞コードが存在するからな
そんな糞コードに後から修正入れようとすると信じられないようなミスも起こる
429
(1): 2017/02/14(火)10:07 ID:H0Zx0irg(2/2) AAS
関数の長さと糞さは別だな
無理に短くしてあちこち飛ぶコードの読みにくさったらありゃしない
430: 2017/02/14(火)10:25 ID:ze+N1Rxh(1) AAS
短いからといって読みやすいはとは限らないが、
長いと読みにくいのは確実なので無関係ではないな
431: 2017/02/14(火)12:52 ID:8LvI494R(1) AAS
>>429
1行目と2行目で矛盾してるぞ
432: 2017/02/14(火)15:01 ID:Y4N6R9g2(1/2) AAS
短く を目標にはしないが、長いと
どうしても何かの力を感じてw
短くしたくなるわなぁ
433: 2017/02/14(火)15:19 ID:t9BEI7G/(1) AAS
必死にprivate関数で小分けにしてた頃を思い出すわ
気にしなくなってprivate関数の存在価値がよく分からなくなった
434: 2017/02/14(火)15:31 ID:Y4N6R9g2(2/2) AAS
privateとその長さは関係ないと思うが
435: 2017/02/14(火)17:04 ID:lntB2yLX(1/3) AAS
俺も429派かなぁ
特に再利用するようなものでもないのに関数に小分けにしてもあまり意味がないし
仮に1000行あったとしても、制御構造が単純で上から下へ逐次実行するだけだったり
プログラムの読みにくさと関数の長さは根本的に関係ないと思う
関数の長さに関係なく単純に、
仕様が複雑で、ややこしいことしている箇所は、やはりややこしい
難しいアルゴリズムを使っている個所は、やはり難しい
436: 2017/02/14(火)17:07 ID:lntB2yLX(2/3) AAS
そうはいっても100行を超える関数はさすがに書いたことないけどな
クラスビューとかでジャンプできなくなるから作業性に問題が出る
437: 2017/02/14(火)17:12 ID:lntB2yLX(3/3) AAS
100行と書いたけど、それは1000行のまちがいだ
100行を超える関数は普通に書くことがあるな
新しいC++になってからラムダが関数内関数の代わりに使えるようになったから
こういったものを駆使すると長い関数を書いても比較的に問題が出にくくなったってのはある
メソッドにするとクラス空間が汚れるから関数内関数の方がよい場合も多々
438: 2017/02/14(火)19:47 ID:vv2eSSm9(1) AAS
100行超える関数はほとんど書かないけど、
100行超えるコメントはしょっちゅう書くな。
439: 2017/02/15(水)01:17 ID:xbLGAB7Z(1) AAS
名付けに困らないくらいの単位で処理を纏めて上にポイだな
無名ネームスペース大活躍

再利用しなくても処理を分けとくとバグを潰しやすいし
440: 2017/02/16(木)04:06 ID:6VkTpxSR(1/2) AAS
ラムダ 入門 で検索しても簡単なサイトが見つかりません。
どこか良いサイトか書籍はありませんか。
441: 2017/02/16(木)04:13 ID:0dItl/ZH(1) AAS
入門しなきゃならん奴が使うもんじゃない
442: 2017/02/16(木)04:38 ID:6VkTpxSR(2/2) AAS
外部リンク[html]:cpplover.blogspot.jp
ありました。
外部リンク:d.hatena.ne.jp

ここ2つでまずは頑張ってみます。
443: 2017/02/16(木)12:45 ID:SkhlZoRn(1) AAS
よくわからんもの
ラムダ式、関数オブジェクト
444: 2017/02/17(金)04:01 ID:/gNkD5d3(1/2) AAS
#include <iostream>
using namespace std;
int main() {
unsigned char aa=0x31;
cout << hex<<aa <<endl;
return 0;
}
なんで 31 と表示されないのでしょう
445
(1): 2017/02/17(金)05:25 ID:Z2r3IJRX(1/2) AAS
たぶん 1 が表示されるでしょ。
aa が char だから出力ストリームでは文字が出る。
数値を出したければ aa を int で定義するか、
cout のところで int にキャストしてやらないと。
446
(1): 2017/02/17(金)07:07 ID:39ud/5Wb(1) AAS
>aa が char だから出力ストリームでは文字が出る

因果関係がよくからないのですがcharだとなぜ文字がでるの?
447: 2017/02/17(金)07:22 ID:fOTzzkTG(1) AAS
>>446
渡した値の型によって、それをどう表示するかが異なるように作られているから。
printfという関数で出力する場合は、出力したい値のほかにそれをどういう形式で出力するかという情報を別に与えていたけど、iostreamでは、型で自動的に処理してくれる。
448: 2017/02/17(金)07:52 ID:+UDZhFA4(1) AAS
uint8_tとか使ってるとき嵌るんだよなぁ。
449: 2017/02/17(金)07:53 ID:Z2r3IJRX(2/2) AAS
「C++では引数の型や個数が異なる同じ名前の関数をいくつも定義できて
引数の型や個数に応じた別々の動作にできる」
「関数引数の変数値が(Cとは異なり)自動的にはintに格上げされない」
くらいしか説明の文面を思いつかないけど、我ながら分かりにくいな。

coutに対する<<演算子(を実行する関数)が、
charの引数に対しては文字を、intの引数に対しては数値を
出力するよう上手いこと作られている。
ってのは「昔からそう決まっとる」式の押し付けがましい感じだし。
450: 2017/02/17(金)15:18 ID:/gNkD5d3(2/2) AAS
>>445
ども 書いた後、すぐintでやったらわかった。
"<<" 系の入出力演算子とビットシフトの問題も同じ理由か。
451: 2017/02/17(金)17:04 ID:xoJSqgdl(1) AAS
VC++の質問です。
フォームのコントロール(ボタンなど)をアンマネージクラスに保持する方法が知りたいです。

// コンストラクタの引数より、ラベルのコントロールをprivateに保存し、setLabelTextでラベルのテキストを変更するクラス
class LineController
{
private:
  System::Windows::Forms::Label^* label_;
public:
  LineControllerSystem::Windows::Forms::Label^% label);
  void setLabelText(System::String^ str); // label_のTextに引数strを設定。
省7
452
(1): 2017/02/19(日)11:23 ID:2DCCXMeS(1) AAS
C++の話題そのものではないのですが
バブルソートとか初歩的なアルゴリズム
を優しく解説している書籍はありませんか。

Amazon見てるのですがもう少し情報がほしいです。
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
またその話題ですか‥
1-
あと 500 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.033s