1 名前:デフォルトの名無しさん mailto:sage [2013/04/28(日) 17:27:19.70 ] エスケープシーケンスやWin32APIなどの環境依存なものでもOK。 ただしその場合、質問者は必ず環境を書きましょう。 ※sage禁止です(と代々スレに書いてありますが自己判断で)。 【前スレ】 【初心者歓迎】C/C++室 Ver.83【環境依存OK】 toro.2ch.net/test/read.cgi/tech/1363154865/ ◆ソースのインデントについて 半角空白やTABでのインデントはスレに貼ると無くなります。 そのため、アップローダーに上げるのも手ですが直接貼る場合は、 全角空白か に置換すると見栄えだけはよくなります。 【アップローダー】(質問が長い時はココ使うと便利) codepad.org/ (コンパイルもできるし出力結果も得られる[]privateをチェック) ideone.com/ (時間帯によってはcodepadが重い事があるのでここも利用)
52 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:00:59.61 ] 釣り呼ばわりとか(笑) inlineは本来的にはインライン展開を指示するものだろ 実際にインライン展開されるかどうかはコンパイラの最適化の問題であって本質的なものではない
53 名前:デフォルトの名無しさん [2013/05/06(月) 14:02:36.80 ] 釣りって言われたらそのまま受け取る奴って何なんだろうな ウザいから消えろってはっきり言われないと分からないのかな
54 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:04:01.91 ] ・関数の中身を展開し高速を図ろうぜ ・その性質上定義がヘッダーに書かれる必用があるな ・よし内部リンケージにしよう ・いや、それだといろいろまずい ・よし、ODRだ。複数ファイルでも実体は一つ ←1998年頃 ・もともと展開される保証は無いし、 展開判断はコンパイラに任せた方がよくね? ・じゃあ「インライン」の意味はおまけで 実際はODR対象の為のキーワードだな←今ココ
55 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:05:21.36 ] >>51 例外はあるけどそういう事 static変数の定義だけは例外で、 インライン展開されても変数は全ての箇所で共有される
56 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:06:07.50 ] >>52 inlineキーワードとinline関数は別物だぞ
57 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:08:36.45 ] >>53 お前が消えろよクズ
58 名前:デフォルトの名無しさん [2013/05/06(月) 14:09:07.11 ] 展開とは、inline関数で記述したことをそこにじか書きするのと 同じと考えていいでしょうか?
59 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:11:30.71 ] >>58 基本的にはそれで良いよ ただ本当にインライン展開されるかはコンパイラの判断によるということ >>56 inline関数の話をしてるのは明白だろ
60 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:14:18.23 ] >>59 いえ、inline関数の話をしているのに どうしてinlineキーワードの話にすり替えるのですか?
61 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:16:15.39 ] 元の質問者はトリップつけてくれよ
62 名前:デフォルトの名無しさん [2013/05/06(月) 14:24:37.55 ] >>59 さん サンクスです。
63 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 14:55:44.93 ] >>57 ,>>61 キチガイは早く他所に行ってね スレが荒れる原因になって迷惑です
64 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 15:15:29.74 ] > ウザいから消えろってはっきり言われないと分からないのかな ⇒ >>63
65 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 15:24:47.05 ] とりあえず>>48 の回答は不適切。 釣りかどうかはわかないが
66 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 15:33:08.41 ] 君が不適切と思うならそうなんだろうな。 君の中では。
67 名前:デフォルトの名無しさん [2013/05/06(月) 17:46:04.74 ] >>66 =精神異常
68 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:11:39.19 ] winsockでudpサーバを作ろうとしていますが、クライアントが何らかの信号を出さないと、サーバは誰が接続中でデータを配信しているか 分からないのでしょうか、acceptで接続するときの情報をとろうと実験したのですが、 それだとブロードキャストらしきものを拾って使えませんでした
69 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:21:06.43 ] udpで接続中とかは意味がわからないが、サーバがデータを受信したときに 送信元のIPアドレスは分かるだろう
70 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:34:03.68 ] 具体的にいうと動画データをudpで配信するサーバを作りたいのですが、配信してるクライアントの情報の取り方が分からないです
71 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:35:22.06 ] クライアントの情報とやらがなにを意味してるのか説明しないと
72 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:42:22.49 ] スレ違い
73 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:43:30.43 ] クライアントはipが取れればと思います
74 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:45:30.66 ] マルチキャストなら無理 ユニキャストならお前が知らないはずはない
75 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:50:26.38 ] うーん、それがudpという感じなんですね
76 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:54:46.67 ] >>75 消えろゴミ
77 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 18:58:48.33 ] とりあえず、ありがとうございました
78 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 19:56:44.10 ] >消えろゴミ → ありがとうございました マゾにもほどがある
79 名前:デフォルトの名無しさん mailto:sage [2013/05/06(月) 20:56:21.61 ] >>67 君の中ではそうなんだろうな (w
80 名前:デフォルトの名無しさん mailto:sage [2013/05/07(火) 00:00:14.38 ] inlineの仕様は「通常の関数呼び出しするより 中身を展開する方が望ましい(prefer to)」 だからなあ。 ODRが主目的でないのは異論が無いと思うけど インライン展開されると言い切られるとちょっと違う。
81 名前:デフォルトの名無しさん mailto:sage [2013/05/07(火) 00:30:46.24 ] ほんとに展開されるかどうかはわからんもんね
82 名前:デフォルトの名無しさん mailto:sage [2013/05/08(水) 04:33:36.98 ] 多重継承は正義だったのでしょうか?
83 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 13:04:34.68 ] DMC8.56で、_beginthreadexの呼び出しで死ぬんだがどうすれば良い? 以下コード #define _MT #include <windows.h> #include <process.h> unsigned __stdcall f(void* a) { _endthreadex(0); return 0; } int main() { HANDLE hth=(HANDLE)_beginthreadex(NULL,0,f,NULL,0,NULL); return 0; }
84 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 13:26:24.36 ] 最後の引数が間違ってるからじゃね?
85 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 14:55:06.54 ] VCだとNULLで通るんだがなぁ unsigned tid=GetCurrentThreadId(); HANDLE hth=(HANDLE)_beginthreadex(NULL,0,f,NULL,0,&tid); これで通った ありがとう
86 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 15:33:44.54 ] MSDNによると最後の引数はNULLでも良いはずなんだがな??? あと、そのGetCurrentThreadId()呼び出しは要らない筈
87 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 16:27:58.44 ] ?
88 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 16:49:53.27 ] ああ、最後の引数は関数の返値か。 GetCurrentThreadId()なくても通った。 実装時期が分からないけど、VC6のだとNULLでいいとは書いてないんだな。 平気でNULLにしてたけど。 まあ、DMCだから。
89 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 17:44:56.19 ] 昔はVisual C++でもダメだったので ダミーで用意した変数のアドレス渡してた。 ソースは俺
90 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 19:56:20.98 ] 少なくともリファレンス上は 2003までNULL不可、2005から許容
91 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 21:17:46.00 ] APIじゃなくてランタイムライブラリなら仕様が変わってもおかしくない だがDMCは10年くらい前で止まってるんじゃないか 今さらDMCを使うくらいなら DMDの方がいいw
92 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 21:21:23.38 ] Digital Mars何ソレうまいの?
93 名前:デフォルトの名無しさん mailto:sage [2013/05/09(木) 23:36:30.87 ] 俺はDMMを利用してる
94 名前:デフォルトの名無しさん mailto:sage [2013/05/10(金) 11:04:50.50 ] 今のdmc遊べるよ? tgmath.h以外のC99で追加されたヘッダファイルあるし 関数も大体揃ってる windows依存部分は10年放置だけどw
95 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 10:30:02.96 ] >>94 >tgmath.h以外の 何なのその中途半端。 Win32 API使わないならclangでも挿れた方がマシ
96 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 18:16:13.62 ] いやいや、C99 ってオイ C++03かと思って納得しかけたじゃないかw
97 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 19:19:20.18 ] あのさ、VS2012ですらC99に対応してないんだから、C99を中心に語るのはやめてくんない? gcc(完全準拠じゃない)とIntel C++(これも完全準拠じゃない)は対応してるけどさ
98 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 19:42:38.93 ] >>97 14年前の規格すら対応していない KUSOコンパイラを君が使っていると いう理由で 他人に変なこと要求しないでくれ。 Cだって2011年に改訂されてるんだから 2世代前の23年前の仕様で物を語られても困る。
99 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 19:47:33.89 ] >>98 VS2012を捨ててgccを使えと?仕事で使ってるので無理です
100 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 19:52:49.13 ] >>99 ここはVisual C++スレではないので、Visual C++前提で 話をするのは止めて下さい
101 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 19:55:04.24 ] >>100 じゃあこのスレは何のコンパイラを使ってる人のスレなの?そこをはっきりさせてよ >>1 にも書いてないじゃん
102 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 19:56:03.55 ] 環境依存おkなんだからどんなコンパイラだろうがいいだろ
103 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 19:57:30.47 ] >>102 そうかわかった まあgccはEclipse CDT入れてるからいいけどさ
104 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:00:35.28 ] >>101 環境を述べた上であれば環境固有の話をしてもいいスレです。 Visual C++と説明した上でC90の話をすることは構いませんが 話の前提をVisual C++の低スペックに合わせる不自由を 他人に要求しないでください
105 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:03:23.82 ] VS2012が低スペックだと・・・?
106 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:03:48.04 ] もろちん
107 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:13:39.14 ] >>105 1990年仕様のままで 1999,2011の2回の改訂に 全く追従してないからな。 Cについては化石だろ?
108 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:19:31.69 ] msとしてはC++使えってスタンスだからな しゃあない
109 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:20:21.64 ] gccとかclangの方がマシとは
110 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:38:59.38 ] ウンコVCにはハーブサッター氏も困っている herbsutter.com/2012/05/03/reader-qa-what-about-vc-and-c99/
111 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:44:37.15 ] でもMSってClangに興味を持って秘かに取り入れようとしてるんでしょ?SP2位で入れて来たりして
112 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:47:47.88 ] >>111 4月に出たうぷだて2には入っていませんでしたよ
113 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:53:30.93 ] >>111 半年の短期採用でどうにかなるもんじゃないだろ
114 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 20:56:43.58 ] という事は次期バージョンか、それとも有償プラグインかよ
115 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:04:25.96 ] >>99 いまやVC使っている奴よりGCCが圧倒的に多いだろ VC捨ててGCCにする
116 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:06:19.35 ] >>115 winの仕事でgccって、オマエばかなの?
117 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:12:17.68 ] バカなんだろう
118 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:24:24.62 ] GPLで仕事か 羨ましい(笑)
119 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:31:12.46 ] でも、Visual C++ってC++11のサポートすら中途半端な低スペックだからな 低スペックな奴は低スペックなのが良いのかもな
120 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:46:58.52 ] 企業が開発する有償のコンパイラが 2011年9月の規格を2012年に完全に 盛り込むのは難しいだろう。 VC6の時は規格制定から約3ヶ月後の 出荷だったし、不幸なコンパイラだな。
121 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:50:54.04 ] VC++は「みんな使ってるから安心」が最大のメリットなんだよ。 最新規格を追い求める向きはそういう製品をどうぞ。
122 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 21:57:47.19 ] >>120 細かいことだが前後が逆だぜ Visual C++ 6.0: 1998年6月 C++第一版: 1998年9月 ---おまけ 1999年 C改訂 2002年 Visual C++ .NETでスルー 2003年 Visual C++ .NET 2003もスルー 2005年 Visual C++ 2005もスルー 2008年 Visual C++ 2008もスルー 2010年 Visual C++ 2010もスルー 2011年 C改訂 2012年 Visual C++ 2012またもやスルー
123 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 22:01:04.11 ] vc糞過ぎる
124 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 22:23:51.36 ] みんなって言うか、少数民族がじゃない
125 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 22:27:03.20 ] >>124 仕事の話を趣味の話にすり替えないでください
126 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 23:43:30.87 ] 趣味ならともかく仕事の話ってなると小数派になるんじゃない? 組み込み屋もC/C++使っているんだから で、MSはいまやあんまりVCに力入れてないように感じるんだけど
127 名前:デフォルトの名無しさん mailto:sage [2013/05/11(土) 23:45:28.77 ] まるで職業プログラマが全て組み込み屋みたいな言い方だね。
128 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 00:07:31.06 ] >>126 なんか明後日の方向には力入れてる。 C++/CLIとかC++/CXとかなんかもう訳分からんw
129 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 00:28:04.87 ] >>126 .NETの時代でしょー SQL Server + .NETは超楽じゃん
130 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 00:56:56.72 ] 仕様策定者がレファレンス実装を出さないのが悪い
131 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 01:01:02.49 ] >>128 C++の進化が亀過ぎで、自社で拡張しないといけないんだろう MS的にはC++にしがみつくのは止めてねって感じかな Win職業プログラマはMSの導きに従わないと、だんだん食いぱっくれるかも
132 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 09:41:38.56 ] >>130 参照実装と言えば、 C99のジェネリックって_Genericも無しに どうやって実現すんだ?と思ってヘッダーを覗いたら ウンコな実装で拍子抜けしたでござる
133 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 10:46:52.82 ] インターフェースがしっかりしててそれなりに動けばいいの コンパイラ屋のモチベは下がるかも知れんけどw
134 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 11:31:36.35 ] C99の似非ジェネリックなんていらねーよ C#のジェネリックの方がよほど使える というかさすがにスレ違いか
135 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 11:37:31.51 ] そこでどうしてC++とかC11でなく C#になったのた不思議。 第一、Cのジェネリックに対応するC#の仕様は ジェネリクスでなくオーバーロード。
136 名前:デフォルトの名無しさん mailto:sage [2013/05/12(日) 11:44:39.61 ] C#のジェネリックはC++のテンプレートとは全然違うんだぜという話をしようとしたが、 これはするとしたらC#スレで話するわ
137 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 21:28:49.53 ] むしろどう違うととらえてていたのか気になる ・C#では(クラス型は)物理的なインスタンスが一つ。 つまりオーバーロードの解決はコンパイル時 ・そのためTが満たすべき条件をC#では基本クラスで指定 一方C++はコンセプトLite検討中? ・そのためC#は特殊化が原則無い ・でも倫理的なインスタンスの型情報(Tが何型か)は持っている ・C++は型以外の値そのものをパラメーターに指定可 使い勝手はあんまり変わらないような。 仕組み的にはC#は基本クラスの型を使って 実行時解決できるレベルの汎用化だけど C++はコンパイル時に全てが決まるメタプログラミング って点かな。。
138 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 22:44:27.60 ] 今から勉強しようと思いますが CよりC++を学んだ方が良いのでしょうか? 一通り使いこなせるようになるまで それぞれどの程度かかりますか?
139 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 22:55:17.03 ] Javaでクラスとインタフェースを学んで Cでどれほど危険なプログラムが組めるかを学んで C++を学ぶのがいいと思うよ。
140 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 23:00:19.79 ] Javaを先にやると、Cのありがたみが わからずに 「なんで何のチェックも無しに落ちるんだ」 「コンパイルエラーメッセージが意味不明」 「おまじない大杉」 などとクソ認定される恐れが大。
141 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 23:02:35.68 ] 初学者は色々と不便な環境を経験しておいた方が 色々と気をつけるようになるのではないかと思う事はある
142 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 23:28:19.74 ] むしろ特定分野を狙うわけでもないのに CやC++を勉強するのが無駄。 「ワシらは紙に穴をあけて…」と史実を 語られるレベル
143 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 23:41:26.11 ] ディップスイッチパチパチの人も 時々は思い出してあげて
144 名前:デフォルトの名無しさん mailto:sage [2013/05/13(月) 23:53:03.96 ] よしじゃあCの前にまずPL/Iだな
145 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 07:55:35.04 ] PL/Mとどう違うの?
146 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 08:53:40.29 ] PL/Mは整数しか扱えんぞ
147 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 09:30:49.06 ] 唐突なんだが、ヘッダファイルの拡張子はテンプレートクラスを含む時が.hppで、それ以外が.hだと 思ってたんだけど、先日C++のヘッダファイルは全部.hppにするのが業界標準だよって言われた。 業界が何を指してるのかイマイチよく分からなかったんだが(てか、サッパリ分からなかったんだがw) 実際どうなんですか?
148 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 12:02:03.60 ] Boost信者はhppを好む。 業界標準化と言われると微妙だな。
149 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 12:22:51.02 ] 何処の業界かは知らないけど拡張子なんて飾りだよ
150 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 12:29:56.11 ] 業界標準かどうかは知らないけど Cコンパイラでコンパイルすることを(実際にできるできないにかかわらず)全く考慮してないならhppにする また拡張子だけ見て強調や補間のモードを変更するエディタとかあるからhppにしといたほうが便利なときもある
151 名前:デフォルトの名無しさん mailto:sage [2013/05/14(火) 19:44:39.78 ] .hppでも.hでもいいから混在はやめてほしい。 業界標準だよと言われたら「お前の中ではな」 と思っておけばいい。
152 名前:デフォルトの名無しさん mailto:age [2013/05/15(水) 12:29:19.47 ] 派生クラスを複数生成したら 基底クラスも複数生成されるの? 基底クラスは1つ?