【初心者歓迎】C/C++室 Ver.104【環境依存OK】

■ このスレッドは過去ログ倉庫に格納されています
2018/12/28(金) 06:04:52.38ID:ufThBpcD
エスケープシーケンスやWin32APIなどの環境依存なものもOK
そのような質問は必ず環境を書きましょう
半角空白やタブでのインデントはスレに貼ると無くなります

コードを貼れる所
http://codepad.org/
https://ideone.com/

前スレ
【初心者歓迎】C/C++室 Ver.103【環境依存OK】
https://mevius.5ch.net/test/read.cgi/tech/1530384293/
2019/02/26(火) 16:05:20.40ID:5MxkS3P7
>>595
なんで、そんな面倒くさい事をしなきゃならないんだ?

Ruby なら、PowerShell から、1-liner で、
Rubyで作られた遅いウェブサーバー、WEBrick が起動する

ruby -run -e httpd . -p 8080

そのフォルダに、index.html があれば、
何も考えなくても、これでブラウザからアクセスできる

http://localhost:8080
2019/02/26(火) 16:39:31.27ID:2RZ4BMiv
>>599
お前は相手の意図を理解する気がまったくなく、人とのコミュニケーションができないことをさっさと理解して、巣にかえって閉じ籠っていてくれ。
ここはお前に用がある奴は一人もいない。
601588
垢版 |
2019/02/26(火) 17:33:10.46ID:+14u2RP+
みなさんありがとう
今日は会社で暇だったのでコピペベースながらUDPで任意のメッセージ送受信出来るようになった
ヘッダでincludeする構造体って宣言済みのクラスみたいな感じで使えることを理解しました。(udphdrを使わずにsendしたからか、送れたけどudpチェックサムは自動で計算されなかった)

tcpは、というかhttpサーバは難しそうですが頑張ります!
2019/02/26(火) 17:44:16.64ID:MNG9zBp3
>>598
gcc/clang だと -Wshadow だな。
-Wall -Wextra とは別に指定する必要があるようだ。
細かいことを言えば、同じ型でなくても、名前が隠される場合は警告が出る。

今ネットで調べて確認、これからオイラも使うことにする。
2019/02/26(火) 23:22:44.06ID:8Je4SUY+
同じ意味だけど型が違うときの変数名ってどうされてますか?
いつも困ってます。

例)

float2 fPos( 1.0f, 2.0f );

XMFLOAT2 fPos( fPos.x, fPos.y ); ←当然同じ名前は×
2019/02/27(水) 07:11:30.50ID:tay7IMIk
>>603
float2でfPosって付けてるならXMFLOAT2ならxPosとかでいいと思うが…
2019/02/27(水) 07:53:03.71ID:3Jl+ieqT
>>603
よくシステムハンガリアンは悪と言われるけど、この例のように同じ内容で型名の違いに意味がある場合は、型名に関するプリフィックスをつければいいんでない?
とあるライブラリに渡す境界部分ならそのライブラリ名に関するプリフィックスとか。
2019/02/27(水) 19:12:35.49ID:8imVoWCJ
初心者ですみません、こんなコードをみたのですが2点わかりません。
char packet[1500];
memset(buf, 0, sizeof(buf));
ether_header *eh;
eh = (struct ether_header *)packet;

たぶん、1500byteのメモリを確保して0埋め、ether_header構造体のポインタを宣言してpacketのアドレスを渡す、としたいのだと思います。

分からないのは0埋め対象が宣言されていない変数bufであること、packetのアドレスを渡すのにわざわざether_header型のポインタにキャストしている2点です。よろしければ教えてください。

https://qiita.com/marufeuille/items/81f323a52a6fd3bd530c
2019/02/27(水) 19:18:47.40ID:AjY/hWvK
bufはpacketの間違いか? 多分。
2019/02/27(水) 19:25:41.76ID:uRVYM9rZ
キャストしてるのはwarning回避じゃないか?
2019/02/27(水) 19:41:57.94ID:vHAcjSp1
>>606 の引用元を見るとコード片だから、実際にはコンパイルしてないんだな。

char packet[1500];
memset(buf, 0, sizeof(buf));
は、packet と buf が同じもので、正しくは

char packet[1500];
memset(packet, 0, sizeof(packet));

なんだと思う。最初は両方とも buf と書いてあったけど
「もっと自ら語る変数名にしよう」と packet に変えたはいいが、
memset() の方では直し忘れた、というお話かと。


(struct ether_header *) のキャストは、コンパイラの警告対策だな。
…って言うか、これキャストしないでも警告だけで通るのね。
2019/02/27(水) 19:48:31.45ID:cPR259KO
やってきたパケットのうち 頭のEthernet Header にフォーカスしてる意図でのキャストかな?

最終的には char [1500] で受け取ったパケットの配分を(パディング無しで)
 struct TCPpacket {
  Ethernet_Header eth;
  IP_Header iph;
  TCP_Header tcph;
  char* TCP_payload[]; /* 末尾可変サイズ */
 };
に配分したいんだろうけど、手を抜くなら union にしそうだわ

union Packet {
struct TCPpacket tcp;
char* packet[1500];
};
611603
垢版 |
2019/02/28(木) 00:25:33.39ID:OS/9xoBt
>>604
>>605
ご提案ありがとうございます!
何らかのプリフィクスで識別が妥当そうですね。
ローカル名前空間みたいな概念があると便利そうですが・・・。

local namespace XM
{
  XMFLOAT2 fPos;
}

float2 fPos( 1.0f, 2.0f );

XM::fPos = { fPos.x, fPos.y };
2019/02/28(木) 09:35:29.75ID:KtBFXYBy
どうせ長ったらしい関数書いてんだろ
それがそもそもの間違い
2019/02/28(木) 12:25:31.13ID:o9FaNCnF
>>607
>>608
>>609
ありがとう、cがとんでもなく難しい言語かと誤解するところだった。
2019/02/28(木) 20:15:42.34ID:FII1Vkt+
>>583
https://mevius.5ch.net/test/read.cgi/tech/1549160513/
にお題がいっぱい転がっています…
2019/02/28(木) 22:42:25.23ID:chn/XevV
いやーCは簡単な言語だけどC++はとんでもなく難しい言語だと思うぞ
解説本が電話帳より分厚いなんてな自然言語超えてる
2019/02/28(木) 22:46:25.10ID:UN7NGNSN
そんな解説本あるのかw
2019/02/28(木) 23:11:49.78ID:LM7UlKO7
それはあいつが悪いだろ‥
2019/03/01(金) 00:09:02.27ID:TIzWjpCx
しかも、言語仕様の改訂が3年ごとと早すぎて、
邦訳解説本はもちろん、原書でもリリースがおいつかず、
仕様改訂を繰り返すたびについてこれないユーザーをふるい落とす恐るべき言語
仕様改訂の世代を重ねるごとに中国以上の人口減少率でユーザー数が減少する既に終わった少子化言語ww
2019/03/01(金) 01:01:16.39ID:SPEgyt6t
なんか皆C++はむずかしいむずかしいっていうが、そんなむずかしいか?
俺的には今時のECMAScriptと各種フレームワークの使い方のほうがよほどむずかしい。
2、3年もすると何だかイノベーションがどうのこうのいってまるっきり別物のコンセプトのがでてくるし・・。
C++なんて基本概念はもう何十年もかわらんだろ。あとはその都度必要なstlとかの機能覚えればいいだけ。
楽なもんだよ。
2019/03/01(金) 01:51:54.22ID:ejlMN09K
今何も見ずにラムダ式書ける?
2019/03/01(金) 01:55:24.44ID:aAd1thXX
有名所のライブラリでラムダ式使ってるの見たことない
2019/03/01(金) 06:22:49.33ID:TGgsjFNR
『プログラミング言語C++』第4版は電話帳より厚いね。
あれは解説書だよな。1300ページ以上ある。

ちょうど新しい電話帳が届けられたばかり。
田舎住まいだから都市部に比べて電話帳が薄いってこともあるけど。
2019/03/01(金) 07:01:09.26ID:TGgsjFNR
C++は新しい言語仕様が次々に追加されるせいで、
同じ細かな処理をするにも人によって書き方が色々になって、
「同じ言語で同じ処理をしてるはずなのにソースは似ても似つかない」
「自分で書くには便利だけど、他人の書いたプログラムは読み解けない」
てな状況になってるんと違うかな。

わざわざストラウストラップ先生が「言語の全部を知らなくても、
徐々に理解しながら使えばいい」と書いてくれてるけど、
他人のソースを読む際には役に立たないアドバイスだよね。
624デフォルトの名無しさん
垢版 |
2019/03/01(金) 13:03:30.11ID:ozM8zBQ9
>>615
CもC++も仕様は簡単
ライブラリやアルゴリズム考えるのが面倒で生産性が低いだけ
それを難しいと勘違いしてるだけ
2019/03/01(金) 13:21:26.51ID:5w/5u0Tx
こういうc++の危険さをまったく認識できてないやつが一番困る
std::forwardの意義を誰にでもわかるように説明してみろよ
2019/03/01(金) 15:52:20.02ID:3z2kkMi4
C++11以降とそれ以前で違い過ぎるのが問題では?
2019/03/01(金) 16:02:10.84ID:Vq7maKYR
>>623
「徐々に理解しながら」は、 C を既に知っている人を明らかに想定していて、
今では C がそんなに支配的でもないという状況を思うと適切な動線とは言えないという意味でも
あまり役に立たなくなってきていると思う。

ただ、追加された機能を見ると、
新しい書き方の方が間違い難くて綺麗で一貫していることが多いので、
肥大化するから追加するのをやめろとも言い難いんだよな……。
2019/03/01(金) 16:17:07.89ID:yZJ4Zkhu
皆、ドワンゴ江添亮の本を読んでいないから、C++ の恐ろしさがわからないのだろう

詳細を突っつくと、無限にややこしいものが出てくるw
だから江添でさえ、詳細は省略しますって書いてあるw

>>610
1バイトずつ、check sum を計算するような場合は、そういうように、union にするのが定番
629デフォルトの名無しさん
垢版 |
2019/03/01(金) 17:25:35.13ID:tC4m5Wn4
●ワンゴ倒産の危機わろすω
630588
垢版 |
2019/03/01(金) 17:56:26.55ID:VPz6Y2H0
udpパケットを送れるようにはなったのですが、wiresharkで確認するとudpフレームのchecksumが未定義となっていました。。。
そこで1からやりなおしたいのですが、ソケットはrawで開くべきなのでしょうか。いまはudpなのでdgramで開いてsockaddr_inのインスタンスをつかってsendtoしています。
631デフォルトの名無しさん
垢版 |
2019/03/01(金) 18:11:15.15ID:a4IFMTFx
checksum計算して値入れてから送れよ
632デフォルトの名無しさん
垢版 |
2019/03/01(金) 18:18:10.83ID:6LDVvTwi
enumについて教えてください
enum { ..\..\VAL1, VAL2 };
このような書き方でコンパイルが通る環境はありますか?
case ..\..\VAL1:
というのも許される環境はありますか?
c/c++
2019/03/01(金) 18:57:53.08ID:p6eROYwf
よくわからんが、識別子の定義を変えたいということか?
634632
垢版 |
2019/03/01(金) 19:04:29.12ID:6LDVvTwi
どこかで見た覚えがあります
635588
垢版 |
2019/03/01(金) 19:14:27.70ID:VPz6Y2H0
>>631
調べた方が足りませんでした、NICのTCP offloadingという機能が有効になっていたせいで、NICより手前でキャプチャするとunverifiedとなっているようです。大変失礼しました。
2019/03/01(金) 19:23:28.99ID:HVxvwZsK
>>619
>今時のECMAScript
いや、ハードウェアに固定されたバイナリーですらなく、ソフトウェア上で決められた決め事になんら意味を見出せないのですが、それでも javascript とかに熱意を抱けるコツがあったら教えてください
2019/03/01(金) 19:25:06.34ID:HVxvwZsK
>>629
いいかげんにニコ動をなんとかしてほしいです、昔も重かったけれども今も重い、これはなんとかならないのですか?
2019/03/01(金) 19:27:08.91ID:YTopxKYT
>>636
>>619の書き込みのどの部分を読んでその質問がでてきたんだ?なんかバグってね?
2019/03/01(金) 21:35:36.90ID:Y8fj+4tW
引数のmove受け一つとってもrustの3倍くらい難しくなってるわな。
シンタックスが特殊だし、オーバーロードはされるわ、特殊な右辺値に対してのみ動作するとか
根本からおかしい。
2019/03/02(土) 09:08:32.90ID:NYNVQHNm
物作った事の無い人の重箱の隅つつき+詳細未記載本なんて
時間の無駄だというのが良くわかった。
石田晴久の通信プログラムとか技術書展の方がマシ
2019/03/02(土) 11:46:55.44ID:jZcAiOx4
ソース書くときに気を付けるのはとにかく引き継ぎしないといけなくなったときに楽になるようにって点かな。
上から読み下していったときにわかりやすければなんでもいいと思ってる。
642デフォルトの名無しさん
垢版 |
2019/03/02(土) 12:38:56.25ID:+L4gK20K
構造体で例えば
struct POINT{
int x, y;
};
があるとき
struct POINT p = {1, 2};
と定義と代入を同時に出来ますが
一度代入したものを後から書き換えるとき
p = {3, 4};
と書くとエラーになるみたいで
p.x = 3, p.y = 4;
と書かないといけないのが面倒です

先生なんとかなりませんか?
643デフォルトの名無しさん
垢版 |
2019/03/02(土) 12:45:48.83ID:+L4gK20K
ああできた
p = (struct POINT){3, 4};
これでいけました
2019/03/02(土) 13:27:28.31ID:NYNVQHNm
構造体一括代入はANSI以降の機能だからOS/9とかCP/M68K
のC言語では当然のように動かない
645デフォルトの名無しさん
垢版 |
2019/03/02(土) 13:49:52.82ID:+L4gK20K
C++だと
p = POINT(3, 4);
もいけるかな
646デフォルトの名無しさん
垢版 |
2019/03/02(土) 13:50:54.37ID:+L4gK20K
>>644
たぶんそうだったと思います
ありがとうございます
2019/03/02(土) 14:04:36.97ID:tMatklv8
>>645
C++11 以降なら p = {3, 4}; でもいけるよ。
648デフォルトの名無しさん
垢版 |
2019/03/02(土) 14:07:27.41ID:kDivPjLV
片山さんは何で改名したんですか?
2019/03/02(土) 16:04:24.12ID:uz1yhwTy
C の p = (struct POINT){3, 4}; は、構造体の一括代入に違いないけど、
(struct POINT){3, 4} の部分が「複合リテラル」compound literal だから
使えるのは C99 以降だね。
2019/03/02(土) 16:10:37.25ID:EmfZa2jP
>>643
理由が"面倒"だったのに、文字数増えてるよねそれ
2019/03/02(土) 16:12:43.27ID:Ud+LwFnR
>>649
これは、C++ に合わせてほしかったな、と思うのです
652デフォルトの名無しさん
垢版 |
2019/03/02(土) 21:57:47.90ID:nqwTLRnH
>>650
要素数によるやろ
2019/03/03(日) 10:43:47.19ID:lzyzpNmU
C++の規格で使いたいならC++使えで
2019/03/03(日) 10:52:31.28ID:BbxzBxVK
c++の規格って言ってもその辺、c++のいつの規格だよって話になるんじゃないの?
2019/03/03(日) 12:23:44.49ID:eB5he6fi
>>629
会社の売り上げに貢献せず、警察を提訴するような
キチガイ高卒社員が資産食い潰してるんじゃね?wwww
2019/03/03(日) 12:30:17.98ID:eB5he6fi
>>622
すでに3版でも電話帳より厚いよ
まともに読む気になるのは2版までだな。
熱意あるうちはともかく、ふと我に返ると俺何してんだろって。
そんで、言語覚えただけじゃプログラムてかけないしな。
2019/03/03(日) 12:36:20.23ID:0vjeZZiI
C++でまともなWebサービス作れるエンジニアなんて相当単価高そう
もうオワコン動画の便所掃除やりたがる奴なんていないだろうし
658デフォルトの名無しさん
垢版 |
2019/03/03(日) 14:17:56.07ID:ilhG1tLW
オワンゴとは良く言ったものだな
2019/03/03(日) 14:31:57.32ID:XzFmXWmd
サービスを書くのに C++ の比率は高くないかもしれんが、
サービスを支えるインフラには C++ を使うことだってあるだろう。
660デフォルトの名無しさん
垢版 |
2019/03/03(日) 15:36:52.66ID:WlpYxc7g
普通はJavaじゃなかろうか。
661デフォルトの名無しさん
垢版 |
2019/03/03(日) 15:58:13.68ID:E4UxtVYi
Javaは糞
662デフォルトの名無しさん
垢版 |
2019/03/03(日) 16:24:07.50ID:D2G4oQ9F
副業解禁で激変する若者世代とマネージャー世代のキャリア観
https://www.businessinsider.jp/post-107782
フリーランスの職種20個の仕事内容と平均年収をわかりやすく解説
https://www.proof0309.com/entry/shokushu
時給1万円のバイトも。会社員向きのプチ副業を、“バイト芸人”が教える
https://headlines.yahoo.co.jp/article?a=20190226-00127948-bizspa-bus_all
副業が「会社にバレる人」と「バレない人」の大差
https://headlines.yahoo.co.jp/article?a=20190303-00268007-toyo-bus_all
正社員の10%以上が副業 中には過重労働で体調崩す人も
https://headlines.yahoo.co.jp/hl?a=20190227-00010000-wordleaf-bus_all
「副業で年2000万円稼ぐ男」に学ぶキャリア戦略
https://headlines.yahoo.co.jp/article?a=20190221-00266856-toyo-bus_all
加速する「副業社会」正社員の4割が「副業したい」 気になる収入はどれくらい?
https://headlines.yahoo.co.jp/hl?a=20190218-00010001-danro-life
おすすめ副業22選を現役フリーランスが解説【在宅も可能】
https://www.proof0309.com/entry/zaitaku-hukugyou
会社を辞めてフリーランスで働きたいあなたが知っておくべき10のこと
https://www.businessinsider.jp/post-165731
フリーランスと会社員、働き方の根本的な差 広がる「雇用されない働き方」の課題とは何か
https://toyokeizai.net/articles/-/263055
フリーランス人口は増える!今後は仕事もプロジェクト単位になる!?
https://freelance.mts-career.com/population/
2019/03/03(日) 16:40:10.01ID:QDmbu/k4
言語を使う側なのに、大声でJavaは嫌い()
2019/03/03(日) 23:12:33.70ID:PvgSI+1g
>>629
焼そば屋?
665デフォルトの名無しさん
垢版 |
2019/03/04(月) 04:52:56.59ID:DAN4+o0x
「困った」と
「助けたい」をマッチングする

新たな出会い系アプリか?
2019/03/04(月) 21:58:39.97ID:jKyydNU9
最近はスノボにご熱心。
2019/03/05(火) 04:05:49.01ID:/9uzsfIc
まあJavaは糞これは間違いない
Java使うぐらいならC#使うほうが10倍まし
2019/03/05(火) 06:49:23.03ID:O5wD/kWC
そんなことあるわけない

100倍は違う
2019/03/05(火) 06:58:59.78ID:kisxcMe6
Javaはコボラーと同じく湿った猫のような臭いがします
2019/03/05(火) 14:00:13.11ID:CkJINn0N
Java並に大規模な開発事例ってC++にはあるの?
2019/03/05(火) 15:25:41.23ID:fIhIM0AX
Windows
2019/03/05(火) 17:12:45.41ID:YmAHbq9k
>>670
人月商売をやってるだけで大規模()とは言わない
Linuxカーネルほど大規模なのはJavaではない
2019/03/05(火) 17:33:37.15ID:/9vlYliD
LinuxカーネルってCじゃないのか?
2019/03/05(火) 17:42:59.75ID:zQd5qKqX
javaって大規模なの?
2019/03/05(火) 18:51:08.44ID:t42KPL8W
unreal engineとかクッソ大規模に見えるけどどう?
2019/03/05(火) 19:03:00.43ID:fIhIM0AX
工数でいえばそんなもんクフ王のピラミッドには遠く及ばないだろう
2019/03/05(火) 19:03:04.57ID:VOhJ9aa0
そもそもjreの基幹部分とかc++だろ
2019/03/05(火) 19:33:34.31ID:5rQQuIbo
クフ王のピラミッドがなんか関係あるのか?
2019/03/05(火) 19:57:12.64ID:RSECco33
甘い
甘いなぁ
人月換算だと同じだよ
死者数すらも一致してる
2019/03/05(火) 22:23:27.02ID:kisxcMe6
20年前で70万ステップぐらいでビルドに1Hぐらいだったなあ
2019/03/06(水) 00:39:47.70ID:oR6mPeK7
むしろ>>670が思う大規模なjavaプロジェクトを知りたい
2019/03/06(水) 00:47:13.50ID:URVwFrjm
人数かけて、webページの遷移ごとに別人が開発して、似たような処理をするコードが100倍くらいに膨れ上がって収集つかないようなのが大規模なんじゃね
2019/03/06(水) 02:24:32.10ID:bd8igJ/M
そう言われると、それまさにコボルだなw
2019/03/06(水) 09:21:38.79ID:Bk9kaTOY
コボル島ってどっかになかったっけ
685デフォルトの名無しさん
垢版 |
2019/03/06(水) 09:50:15.63ID:mg6kC0Yg
c++じゃなくてcでnamespaceって使えますか?あるいはnamespace相当の機能ってどうすれば実現出来ますか?
686デフォルトの名無しさん
垢版 |
2019/03/06(水) 09:53:13.16ID:mg6kC0Yg
重力波を検出するのに世界中の電子望遠鏡を接続してリアルタイムに通信してるようだけど
ああいうシステムのコードって何で書かれてるの? FORTRAN ?
2019/03/06(水) 10:10:00.89ID:TjQtzcPT
>>685
cでは使えない
ほぼ上位互換だからc++使えばいいじゃん
2019/03/06(水) 11:25:59.41ID:1+PBsWw4
>>686
マジレスすると、ああいうのはファイルに落として時々バッチ処理してるだけ
言語はだいたいFortranかC++が多いだろうね
2019/03/06(水) 13:12:20.46ID:+Sk++sfs
C++だけは絶対にないな
2019/03/06(水) 13:15:53.62ID:7/fqDaVy
そうか。
2019/03/06(水) 23:36:07.84ID:rIL6SiiZ
std::chronoにnanoseconds取り扱う型があるけど
これってwindowsでもナノ秒の精度ちゃんと取り扱えるの?
2019/03/06(水) 23:39:51.80ID:NglcYyrq
c++11以降はあれ明らかに生産性下がってんだろ。。
誰か本当のことを言ってやれよ。。
2019/03/06(水) 23:41:05.32ID:ARyk7IvZ
構造化束縛はありがたい
2019/03/06(水) 23:42:11.68ID:TjQtzcPT
>>691
自分で試してみたら?
2019/03/06(水) 23:52:49.64ID:07omsi5c
>>691
表現できるだけ
計測できるとは言っていない
2019/03/07(木) 04:25:32.55ID:hEEon6In
じっさいにやったらわかるが、結局 Windows API の持ってる精度までしかでない
あたりまえっちゃーあたりまえだが
2019/03/07(木) 05:42:28.93ID:mVKClUMz
>>694
試そうと思ったらどう試すのがいいんだ?
2019/03/07(木) 06:28:12.40ID:beHWBAJY
短時間、というか連続で何度も時刻の値を入手して、
値の下の方の桁がかならずゼロ並びになってるとか、
時刻同士の差を取って、ある値より小さな数が出ないことから、
解像度の見当を付けるくらいかな。

もっと良いやり方を知ってる人は教えてください。
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況