[過去ログ] 【初心者歓迎】C/C++室 Ver.100【環境依存OK】 [無断転載禁止]©2ch.net (1002レス)
上下前次1-新
このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
554: ◆QZaw55cn4c 2017/04/02(日)17:06 ID:XkKG9LQx(1/2) AAS
>>553
手元のソースをみると
clientSocket = accept(serverSocket, (LPSOCKADDR)&clientSockAddr, &addrLen);
とか
if (connect(destSocket, (LPSOCKADDR)&destSockAddr, sizeof(destSockAddr)) == SOCKET_ERROR) {
とか,構造体のポインタを渡しているね
由緒正しき Berkeley socket では,構造体をコピーするなんて教育的ではない書き方は許していないよ
555: 2017/04/02(日)17:31 ID:QFdfGGyb(1/2) AAS
つまり>>553はK&Rおじさんにも劣る存在
556: 2017/04/02(日)18:21 ID:XkKG9LQx(2/2) AAS
K&R1 おじさん,と
K&R2 おじさん
は区別したまえ,若造
557(1): 2017/04/02(日)19:26 ID:QFdfGGyb(2/2) AAS
どっちも時代遅れの老人でしょ
K&Rなんて昔存在したという噂でしか知らない
万葉集とか古事記みたいなもの?
558: 2017/04/02(日)20:22 ID:II71H9Zi(1) AAS
func1(a, b)
int a;
long b;
{
}
559(1): 2017/04/02(日)22:22 ID:JMz4l+Qd(1) AAS
> &destSockAddr,
> sizeof(destSockAddr)
由緒正しきBerkeley Socketも昔はこういう書き方したな
コイツは進歩が20年前で止まってるのか
今この書き方する奴は死刑でいい
560(1): 2017/04/02(日)23:11 ID:zmcqSa2a(1) AAS
便乗で申し訳ないが、値渡し、参照渡し、ポインタ渡し、の話で
ポインタ渡しといっても、C++の場合はナマポは嫌われて、スマポを使いましょう
ってことになっていると思うんだけど、これはどう渡すのが普通?
スマポを値渡しするのか、参照渡しするのか
はたまたスマポを剥いで、ナマポで渡すのか
個人的に統一しきれないっつーか
所有権やら生存期間やらリソース管理やらが関係してくるなら
スマポで渡すI/Fじゃないとまずいだろうし
逆にそういうのが関係ないなら、スタック上の自動変数を渡したいとかも考えると
ナマポで渡すI/Fのほうが都合が良かったり、どーなんだろ
省3
561: 2017/04/02(日)23:13 ID:6tq4Ne3Z(1) AAS
参照一択
562: 2017/04/02(日)23:24 ID:xNqaI0VS(1) AAS
>スマポを値渡しするのか、参照渡しするのか
>はたまたスマポを剥いで、ナマポで渡すのか
スマポの値渡しと生保は使い分けが必要だが、スマポの参照渡しだけはアホの所業。
とスコットメイヤーが言っていたような
563: 2017/04/02(日)23:43 ID:yhAnz0vw(1) AAS
>>560
shared_ptrはその名の通り所有権を共有する場合のみ使うもの
で、そういう場合は値渡しでもいいよ。中でmoveすれば
所有権を共有しないなら、nullptrを許容するならナマポそうじゃないなら参照
あんまり無いけど所有権を渡した先に移動させるならunique_ptr
564: 2017/04/02(日)23:58 ID:TsXu0WT4(1) AAS
所有権渡したくないならunique_ptrで持っている呼び出し元がgetでナマポを渡すかdereferenceして参照渡すかだな
565: 2017/04/03(月)00:00 ID:Jbp2gIKE(1) AAS
ナマポで渡してもshared_ptrを再取得する方法はあるだろ
まあ前提がいるが
566: 2017/04/03(月)00:34 ID:qQvnlfYK(1) AAS
うむむ、なるほど
ポインタらしき物にこれだけ多くの種類があってI/Fで縛ってしまうのは
一見面倒そうで、最近の流行というか静的型言語的には
型安全と見るべきなんだろうかしら
安易なGC言語より良いかもしれん、単純に情報量は多い
また一つC++が好きになった
うっかり循環参照したら怖いとか
コンパイラのバージョン違いでSTLやmallocの実装に
差異が有ることを前提に組まなきゃならないとか、玉にキズもあるけれど
567: ◆QZaw55cn4c 2017/04/03(月)06:55 ID:VwtRd/3a(1/3) AAS
>>559
C/C++ で生書きするなら今もおなじだよ
568: 2017/04/03(月)07:40 ID:dyU+EMvQ(1) AAS
型に対してじゃないのに括弧つけるの?
569: 2017/04/03(月)08:48 ID:WaUkCV9r(1) AAS
そこはインデントや{}の位置が人によって違ったりするアレだろ
570(1): ◆QZaw55cn4c 2017/04/03(月)19:32 ID:VwtRd/3a(2/3) AAS
>>557
K&R2 は C89 準拠だよ‥C89 が時代遅れだというけれども,いろんなことは C89 のときからやってきていて,C99 で追認された,というだけだよ
571(2): 2017/04/03(月)20:29 ID:5hra1L5C(1) AAS
>>570
あいわかった
お前は今後「K&R1おじさん」(略して「K&Rおじさん」)な
どうせ定数defineや関数マクロまみれなんでそ
572(1): ◆QZaw55cn4c 2017/04/03(月)21:53 ID:VwtRd/3a(3/3) AAS
>>571
略しないほうがいいよ‥
K&R2 おじさん=C89 はまっとうなCer, K&R1 おじさんは時代遅れ,この二つは全然違うよ
573: 571 2017/04/03(月)22:02 ID:ldINtwle(1) AAS
>>572
つまりお主(K&R1おじさん)は
K&R2おじさんが自分と一緒くたにされることを
申し訳ないと感じてるのだな!?
(>543)
> それ,K&R1 から堕落したよね
(>550)
> サイズが無限にのびるかもしれないものをコピーするなんてだめだよ
(>552)
> K&R1 は教育的な配慮に優れた実装だと思うんだ‥
574: 2017/04/03(月)22:14 ID:Vb9tETQW(1) AAS
voidを返す関数には感心したな
生成されるコードは大して変わらないかも知れんけど
575(1): 2017/04/04(火)01:00 ID:jC2xfRDP(1) AAS
関数プロトタイプを除けば、K&R1で十分かもしれないな
voidを返す関数? int でいいんだよ
576: 2017/04/04(火)15:11 ID:AeH3x9f/(1) AAS
戻り値をどうするかはcallerの勝手だからな
577: ◆QZaw55cn4c 2017/04/04(火)19:47 ID:xNF4clmU(1) AAS
>>575
確かに関数プロトタイプは有用だね,これがないと結構ミスるかもしれないね
void を返す関数?int でいいんだよ
578: 2017/04/04(火)20:27 ID:/PIYb7TP(1) AAS
int funca01(...);
int funca02(...);
int funca03(...);
579(2): 2017/04/04(火)23:08 ID:YUY8Mb54(1) AAS
老人は意味とか概念を理解しようとしないから嫌
「bool? intでいいだろ」
「forループ?本質はgotoと同じ」
「enumなんてintでいいだろ」
ホントもう存在が害悪
580(2): 2017/04/05(水)00:33 ID:DVg/5L4N(1/2) AAS
>>550
何が「昔はね」だよw
Qちゃんその当事Cなんて触ってなかったろ?
アンタ最近(たかだか数年?)プログラミングで遊び出しただけの人でしょ
581: 2017/04/05(水)02:38 ID:ZJf7oEgw(1) AAS
>>579
「static const intなんてenumでいいだろ」
こうですね
582: 2017/04/05(水)04:30 ID:ni2ET+sb(1) AAS
奴らは#defineだ
583: 2017/04/05(水)08:14 ID:Bh5NPBNH(1) AAS
マジックナンバー直書きでしょ
584(1): 2017/04/05(水)08:19 ID:qVk1sCwA(1) AAS
K&Rだと〜
c89だと〜
過去の異物がまだ現役だと信じて話してけるのがうざい
585(2): 2017/04/05(水)09:06 ID:ncDYJBnp(1/2) AAS
それ言うならC自体が。
いまさらC++と互換性のないCを選ぶ理由がない。
586: 2017/04/05(水)10:35 ID:k0RY104y(1) AAS
>>585
C++と互換性のないCってどんなの?
587: 2017/04/05(水)19:40 ID:IM5122PI(1) AAS
ベターC的な所全般だな
範囲forとか2進リテラルとかスレッドライブラリとか参照とか
Cにはnullptrすら無いし細かいところでは条件演算子が右辺値とか
ようするに別言語
オーバーロードに対するtgmathとかもう糞の臭いしかしない
588: ◆QZaw55cn4c 2017/04/05(水)19:44 ID:bDXscs5n(1/5) AAS
>>585
たしかに,C99 の数々の改悪は C++ との互換性を考慮していない悪手の連発,ほとほと困ってしまう
>>584
C++ とほどほどの交換性のある C89 が最良だよ
589: ◆QZaw55cn4c 2017/04/05(水)19:46 ID:bDXscs5n(2/5) AAS
>>580
「K&R1 は構造体は基本的にポインタでしか扱えない」制限なんて,使ってもいなかったらわからないだろう?
590(1): 580 2017/04/05(水)20:02 ID:DVg/5L4N(2/2) AAS
え?Qちゃんてサンデープログラマじゃないの?
職業プログラマでもないし
プログラミング暦せいぜい10年未満だと思ってた
591: ◆QZaw55cn4c 2017/04/05(水)20:07 ID:bDXscs5n(3/5) AAS
>>579
>「forループ?本質はgotoと同じ」
そんなことはいわないとおもうよ,K&R1 の時代から for はあるしね
きがつくと for(;;) { } と break だけで書いてたりするのはあるかもね,while 使いにくいとか,do while なんかマクロの中でしかつかわない,とかさ
enum?
#define でいいとおもうよ‥
592: ◆QZaw55cn4c 2017/04/05(水)20:08 ID:bDXscs5n(4/5) AAS
>>590
サンデーだよ
でも長いサンデーなんだ‥
593: 2017/04/05(水)21:26 ID:Kw8eDt7v(1) AAS
ニートじゃ分からんことも多いのでは
594: ◆QZaw55cn4c 2017/04/05(水)22:05 ID:bDXscs5n(5/5) AAS
たしかにそのとおりだが,K&R2 = C89 こそ必要十分,ということはわかるよ
595(1): 2017/04/05(水)22:10 ID:mGFW5fgT(1/2) AAS
そういうこと言ってるとそのうち技術についていけなくなるよ
596: 2017/04/05(水)22:22 ID:ncDYJBnp(2/2) AAS
C99やC11って、新しい技術とかそういうんじゃないじゃん。
597: 2017/04/05(水)22:40 ID:mGFW5fgT(2/2) AAS
規格
598: 2017/04/06(木)10:47 ID:jz0x7tjm(1) AAS
企画ものは好きじゃないからな
599: 2017/04/06(木)16:35 ID:w+UX2Wix(1) AAS
ころころ変わるんだから最新もクソも無いわけだが
pakomamaはガチらしいな
600: ◆QZaw55cn4c 2017/04/06(木)20:02 ID:Uar4T1Gl(1/2) AAS
>>595
別についていけなくてもいいよ,その殆どは自分には要らないものだから
それはそうと,これは!とおもう新しい技術って最近はどんなものがあるの?
601(1): 2017/04/06(木)20:16 ID:kFToYptL(1) AAS
まず、C#のasyncだのawaitだのはC++にも欲しいところ
というか、取り入れる方向で議論していたような
どのみちQZには使いこなせない機能だから知らなくてもよいけど
知れば発狂することだろう
602: ◆QZaw55cn4c 2017/04/06(木)20:21 ID:Uar4T1Gl(2/2) AAS
まずC#をやらないとね‥でも Java に走ってしまった‥Java に同じようなのはないの?
603: 2017/04/06(木)22:33 ID:Ao1zg6OQ(1) AAS
>>601
coroutineの事なら根本的な所が違うから勘違いしないようにな
604: 2017/04/07(金)20:08 ID:cdWiLUH2(1) AAS
馬鹿の特長:目的/機能の違いと実現するための実装の違いの区別がつかない
605(2): 2017/04/08(土)12:56 ID:TFmwEDa6(1) AAS
C#のawaitはGUIのスレッドを意識出来るので有用だが
C++のawaitはただ裏で走らせるだけの機能的には劣化版な気がしてならない
606: 2017/04/08(土)13:14 ID:bfo0YVHI(1) AAS
>>605
c++で標準的なgui使うとすると何になるの?
607: 2017/04/08(土)13:49 ID:xnWSKOe7(1) AAS
>>605
そりゃ C++ と C# のポリシーの違いだろ
608: 2017/04/09(日)22:32 ID:nTEmq1X3(1) AAS
C使ってる人で変数宣言を途中に書く人いる?
やめた方がいい?
609: 2017/04/09(日)23:00 ID:gthRNL4S(1) AAS
むしろそうして欲しいかな
勿論ブロックスコープは意識してる前提で
610(1): 2017/04/14(金)09:11 ID:ezi5K97R(1) AAS
初期のCはブロック先頭しかコンパイルが通らない
コンストラクタも型推論もないのに途中に置くメリットが少ない
初期化漏れというモンスターの隠れ家になりやすい
611: 2017/04/14(金)10:33 ID:L6e5ZQwW(1/2) AAS
一応Cで書くときは関数ブロック直後に書いてるけど、それはそれでforで使うiとかを使い回す事になるから、C++みたくプログラマの良識を信じて(ブロックを意識して変数宣言すると信じて)、好きな場所で宣言出来た方が正解なんだろうな。
612: 2017/04/14(金)10:35 ID:L6e5ZQwW(2/2) AAS
出来た方がと言うか、今は出来るんだから、した方が正解に訂正。
613: 2017/04/14(金)12:59 ID:Hdztr2ik(1) AAS
出来ることと乱用していいことはイコールでない
一瞬だけの一時変数を直前で宣言するのならありだけど
関数全体で使うなら頭で宣言すべきだし、そもそも中間で宣言するような長い関数は
短くなるよう見直すべき
614: 2017/04/14(金)13:04 ID:xSRtCFhF(1) AAS
魔法の言葉
ケースバイケース
615: 2017/04/14(金)19:32 ID:UiWlchtO(1) AAS
スコープは可能な限り狭く
おじいちゃんの遺言
616: 2017/04/14(金)19:38 ID:PNQsiXg9(1) AAS
初期化漏れはブロック先頭でしかかけない方が起こしやすいだろう
長い範囲で使う変数でも、変数ははじめて使うところで宣言した方が分かりやすいしバグも減る。
617: 2017/04/14(金)20:04 ID:Z/bjVn5R(1/2) AAS
初期化忘れ防止はどこで宣言したってあんま関係ないというか
大差ないだろうな実際
必要になった時点で宣言するってことでよいと思う
さもないと上手くいかない場合もあるし
いちいち使いもしない「ダミーの値」で初期化するのは馬鹿らしいし
余計にバグりそう
618(1): 2017/04/14(金)20:13 ID:Z/bjVn5R(2/2) AAS
auto result = func();
まぁこういう風にしたいわな
int result = 0;
・・・
result = func();
↑その「0」って初期化値は何なんですか、何を意味した「0」なんですか
では0の代わりに1で初期化したらどうなるんですか
この初期化値の意味は一体何なんですか
ってことになるしな
結局「0」とか「1」とかの初期化値はダミーでありプログラム上なんの意味もなかったりするし
省7
619: 2017/04/14(金)21:45 ID:spQE74XB(1) AAS
老人の「昔は良かった」を見て顔真っ赤にして論破しようとマジレス
みっともない
620: 2017/04/14(金)23:47 ID:9eRQSDOY(1) AAS
必要なものを必要なときに宣言する
それだけの話
621: 2017/04/15(土)09:16 ID:RtikNDCG(1/2) AAS
>>618
>この初期化値の意味は一体何なんですかってことになるしな
勝手に無駄な初期化しておいてどれだけ頭が悪いんだぜ
ぜんぜややこしくない
お前が馬鹿なだけ
622(1): 2017/04/15(土)09:26 ID:Af1/s0zG(1/3) AAS
もともとが
初期化忘れを防ぐためには関数の先頭で宣言〜
への反論だったからだぜ
623: 2017/04/15(土)09:41 ID:RtikNDCG(2/2) AAS
>622
日本語もわからないチンパンは無理して
コンピュータ使わなくても
祖国でオナニーしてればいいんだぜ
624: 2017/04/15(土)09:50 ID:Af1/s0zG(2/3) AAS
君の疑問がどこにあるのか本当にわからないからどうでもよい
625: 2017/04/15(土)10:02 ID:Af1/s0zG(3/3) AAS
それでもヒントとして>>610への反論だったということだけは言っておこうか
「途中で宣言すると初期化もれしやすい」という風なことが書いてあるが
逆に>>610は何故、先頭で宣言したら初期化漏れしにくい、と考えたか
どういったコードを想定しているかってことだな
要するに>>610はブロックや関数の先頭だけ見れば初期化漏れしていることが直ぐわかると便利だね
って言いたいんだろうけど、それはどういうコーディングルールの元に言えることか
ということだな
626(1): ◆QZaw55cn4c 2017/04/16(日)17:51 ID:3PeEvH/A(1) AAS
for(int i = ...; ; ) が書けるようになったのは素直にありがたいな,と感じている
627(1): 2017/04/23(日)23:52 ID:IUq/7GPJ(1) AAS
>>626
脳の進化が20年前で止まったチンパンはc89でも使ってろ
628: 2017/04/24(月)20:45 ID:et30sNFg(1) AAS
うきー
629: ◆QZaw55cn4c 2017/04/25(火)04:20 ID:Vqnsayjn(1) AAS
>>627
C99 or later で便利になったことなんて,そんなにないんだよね‥
630: 2017/04/25(火)06:08 ID:X14wy5zc(1) AAS
数値計算とか特殊用途なライブラリ追加ってイメージ。
そりゃ、手間の割に汎用性がなかったら対応コンパイラも出てこないわ。
631(1): 2017/04/25(火)22:55 ID:EbISA0IE(1) AAS
インライン関数も行コメントもboolもrestrict も無しで
どうやってプログラム書いてんのか想像もつかない
snprintf無しとか無理ゲーだろ
632: 2017/04/26(水)02:18 ID:Kw1ZNGm3(1) AAS
restrict無しが想像つかないってどういうことだろ
633: 2017/04/26(水)09:07 ID:bRGeq+mw(1) AAS
restrict使ったことないなあ
大きく最適化されるの?
634: 2017/04/26(水)09:13 ID:rDz6/6sg(1) AAS
最適化はあんま気にしてなくて意味的なものかな
memcpyとmemmoveみたいな
635: 2017/04/26(水)09:20 ID:A4NmaPdj(1) AAS
そう言う機能はメーカー独自実装でC99決まるずっと前からスタンダードだったから、C99って実感が無い。。。
636: 2017/04/26(水)11:36 ID:O9yeoh6Z(1) AAS
>>631
いやいやそれはさすがに想像力足りなくね?
snprintf無しは無理ゲーなのは同意するが
637(1): 2017/05/05(金)00:51 ID:evlI6rq7(1) AAS
void func(hoge)
int hoge;
{}
こんな書き方があったん?
638: 2017/05/05(金)01:30 ID:PzvORh1V(1) AAS
>>637
詳しくは k&r style とかでググればいいけど今時知る必要はほぼないと思う
639: 2017/05/05(金)15:05 ID:9iyukdGg(1) AAS
K&R1 だね、引数の型チェックができないから不便かつミスを誘発しやすい
640: 2017/05/07(日)00:55 ID:uDdo3knt(1) AAS
使われなくなった過去の異物に優劣語り出すとか
老人やべーな
641: 片山博文MZ ◆T6xkBnTXz7B0 2017/05/07(日)00:58 ID:gTai4K61(1) AAS
×異物
○遺物
642: 2017/05/07(日)01:41 ID:zkvqzaCu(1) AAS
誰も優を語ってない訳だが
643: 2017/05/07(日)15:54 ID:s2OM55fz(1/2) AAS
ストラウストラップの本って読む価値ありますか?
644(1): 2017/05/07(日)22:28 ID:fUCVOwEA(1) AAS
著書全般の基本的な傾向としては万人向けの価値はない
物事の意味や本質を学び考え悩み理解しようとする人向けの本であって
うわべだけの丸暗記やコピペで即結論や結果を求める人向けの本ではないから
645(1): 2017/05/07(日)22:36 ID:f9jMnLHr(1) AAS
読む価値はあるが嘘が多いので騙されない注意が必要
646: 2017/05/07(日)23:30 ID:s2OM55fz(2/2) AAS
>>644
>>645
上級者向けの本みたいなので
買うのは先に延ばしたいと思います...
一冊高いのもありますが
サンクスです
647: 2017/05/19(金)15:26 ID:49hF9eg/(1) AAS
はぁ〜〜〜〜
安易にC++に手を出すんじゃなかった
648(1): 2017/05/20(土)12:15 ID:Niypv3FQ(1) AAS
変人や御用達の言語だからな
馬鹿のくせにプライド高い老害しか使ってないイメージ
649: 2017/05/20(土)12:51 ID:Nls5mnQ9(1) AAS
>>648
その手の人らの声が大きいだけだよ。特にこんなところでは。
650: 2017/05/20(土)18:23 ID:PYbACk+S(1) AAS
みんな黙ってC++だよ
651(2): 2017/05/23(火)00:42 ID:9/IkIyOw(1) AAS
ちょっとした確認なんだけどさ、
デストラクタが空っぽ (デフォルトデストラクタ) でもオブジェクトを後始末するための何らかの処理はするよね?
よくあるスライシングの問題で、
・クラス A をクラス B が継承している
・クラス A のデストラクタは virtual が付いていない
・クラス B のデストラクタはデフォルトデストラクタ
・クラス B はメンバ変数を持っていない
・B* を A* にキャストしたものを delete
という状況だと見かけ上はクラス B のオブジェクトには後始末すべきものは何もないように見えるけど、
デストラクタが呼ばれないのはやっぱあかんよな?
652: 2017/05/23(火)04:48 ID:pt6Ia/HA(1) AAS
うん
653(3): 2017/05/23(火)09:20 ID:J4YcG+3k(1) AAS
>>651
はい
規格上もデストラクタがvirtualでないBのオブジェクトをA*に入れてdeleteした場合未定義動作だよ
上下前次1-新書関写板覧索設栞歴
あと 349 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.023s