1 名前:デフォルトの名無しさん mailto:sage [2014/04/05(土) 09:00:48.11 ID:4p3tjfYN] C++に関する質問やら話題やらはこちらへどうぞ。 ただし質問の前にはFAQに一通り目を通してください。 IDE (VC++など)などの使い方の質問はその開発環境のスレに お願いします。 前スレ C++相談室 part111 toro.2ch.net/test/read.cgi/tech/1393539884/ このスレもよろしくね。 【初心者歓迎】C/C++室 Ver.90【環境依存OK】 toro.2ch.net/test/read.cgi/tech/1395675954/ 次期規格C++1yはこちら C++14/C++1y toro.2ch.net/test/read.cgi/tech/1382889622/ ■長いソースを貼るときはここへ。■ codepad.org/ ideone.com/ 【重要】 hogeは禁止です。使用しないでください。 万が一hogeが書き込まれても、スルーしてください。 相手にするとあなたも荒らしと同じ扱いになります。
152 名前:デフォルトの名無しさん mailto:sage [2014/04/15(火) 22:28:34.12 ID:LKf0w0dM] >>146 あなた上のJava知識で答えてる人ですよね 初心者でも言いませんよそんな事
153 名前:デフォルトの名無しさん mailto:sage [2014/04/15(火) 22:58:47.22 ID:LKf0w0dM] >>142 ただのメンバ変数を実際に初期化するのは、コンストラクタですので 定義の場所は関係無いです その上コンストラクタのインライン化で、constメンバが最適化で定数になろうが、 ソース上では定数式として扱えることとは別次元の話です
154 名前:デフォルトの名無しさん mailto:sage [2014/04/15(火) 23:13:47.00 ID:UvYr1D+z] データメンバに構造体配列があんだけど{{,,,},{,,,}…みたいなやつで初期化できない 案として関数で同じ型tempに入れた後memcpyするって考えたんだけど、 {{,,,},{,,,}…みたいなやつ以外で配列に楽に数値入れられる方法ない?
155 名前:とんぼ ◆0ioouYq6qF8x mailto:sage [2014/04/15(火) 23:14:43.49 ID:GMTmmGNh] 質問です。 「ロベールのC++入門講座」って良い本でしょうか?ちょっと興味を持っています。 www.amazon.co.jp/dp/4839926050
156 名前:デフォルトの名無しさん mailto:sage [2014/04/15(火) 23:21:17.29 ID:tBkVUf7m] >>154 ideone.com/VQzRHQ
157 名前:デフォルトの名無しさん [2014/04/15(火) 23:43:50.57 ID:irAkhtzu] 取り替え 新しい
158 名前:デフォルトの名無しさん mailto:sage [2014/04/15(火) 23:55:03.42 ID:UvYr1D+z] >>156 試してみますありがとう
159 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 00:18:42.75 ID:33nvow5c] >>155 はい
160 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 00:28:28.07 ID:2jM3l7Be] >>152 part109から出てる話(のコピペ)だが、実は規格的にはその通りらしい。 ドヤ顔がうざいので>>18-19 あたりでテンプレ化が提案された。
161 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 00:54:02.89 ID:j3CsnXmn] 403 デフォルトの名無しさん sage 2014/01/04(土) 03:26:18.89 >>>400 >ヘッダーというのはコンパイラが提供するものなので >アナタは書かないで下さい 429 デフォルトの名無しさん sage 2014/01/04(土) 13:36:43.48 >おそらくど初心者の寝言 432 デフォルトの名無しさん sage 2014/01/04(土) 13:52:11.33 >iostreamのようなものがヘッダーで >プログラマーが書いたmy.hはヘッダーじゃないってことだろ。 >「インスタンスと言ったらテンプレートの話」レベルでは厳密には正しい。 >規格上は >#include "my.h" >はヘッダーでなくソースファイルのインクルード。 「インスタンス」のテンプレ化も誰か考えてくれ
162 名前: ◆QZaw55cn4c mailto:sage [2014/04/16(水) 01:33:54.12 ID:QJ8zo2+Q] >>151 16.2 Source file inclusion [cpp.include] 1 A #includedirective shall identify a header or source file that can be processed by the implementation. この or は「すなわち」と読んでしまいそうだ
163 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 01:44:38.87 ID:d9mP/+D0] …どう迷訳したら>>162 が>>19 になるんだ
164 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 02:03:28.59 ID:tL+eav+5] 私も>>162 の意図は理解できかねますが、 規格には確かに明示的には書かずとも、使い分けているようです 初心者でも言わない、と言った事を謝ります > A preprocessing directive of the form > # include < h-char-sequence> new-line > searches a sequence of implementation-defined places for a header identified .... > 3 A preprocessing directive of the form > # include " q-char-sequence" new-line > causes the replacement of that directive by the entire contents of the source file identified... > [Note: (略) in general programmers should use > the < > form for headers provided with the implementation, > and the " " form for sources outside the control of the implementation.
165 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 07:37:56.51 ID:+jbsyRAW] どっちが初心者だってことか。C++の世界は奥が深いな。
166 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 08:08:09.96 ID:KLaNkKwv] 一つ言えるのは、 この知識が役に立つことは今後無い
167 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 08:51:59.21 ID:hgB94LTZ] >>156 vs2012に張り付けてみたらtest::innerのところ波線引かれてるんだけど
168 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 09:09:57.22 ID:Im3wLyAK] >>167 それって規格準拠度が(ry 実は俺も::innerは初めて見た……ググっても内部クラスのことしか出てこねぇw
169 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 09:10:27.93 ID:diJ3rZ34] vs2010でデフォルトエンコードをUTF8にする方法ってないですよね・・・?
170 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 09:11:43.32 ID:B883BlvZ] ヘッダがマシーンによってプロデュースされるなんて話は初めて聞いた
171 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 09:15:51.92 ID:hgB94LTZ] >>168 2013だと波線でなかった。新しめの方法なんですね
172 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 12:06:12.86 ID:C8nNiAQg] >>164 使い分けてることと、提供するかどうかは別だと思うが #include "〜" はソースもインクルードできるからヘッダーって言ってないだけじゃね?
173 名前:デフォルトの名無しさん [2014/04/16(水) 14:57:05.92 ID:cUKcFdx2] だな >>164 を読んで#include ""するソース(ヘッダ含む)はヘッダと呼んじゃいけない と判断するやつはどこかおかしい
174 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 15:05:12.66 ID:d9mP/+D0] つか".h"".hpp"なんだから素直にヘッダって呼んでやれよ なにか?じゃあこのhは別の意味のhか?
175 名前:片山博文MZバグロボ ◆T6xkBnTXz7B0 mailto:sage [2014/04/16(水) 16:00:32.29 ID:/cD6mxuW] >>169 neareal.net/index.php?Programming%2FEnvironment%2FVisualStudio%2FChangeTheCharacterCode >どうやらVisualStudio2012以前のVisualStudioには >デフォルトのエンコードを設定する方法はないようです。
176 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 16:04:36.82 ID:eXrLUXWn] 第一段落で A #include directive shall identify a header or source file と言う説明があるからheaderとsource fileは別物 むしろ>>164 を読んでhがheaderと思う方が変
177 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 16:39:17.50 ID:bROaamlw] ヘッダーファイルって文字通り先頭で読み込むファイルのことでしょ。 その拡張子はCでは慣習的に.hにしてた。 ってことじゃないの?
178 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 17:22:26.81 ID:RlYL1+PT] 規格から読みとれるのは以下 ・#include<>は処理系定義のheaderをインクルードする ・#include""はソースファイルをインクルードする ・#include""はソースファイルが見つからなかったら #include<>として再解釈する ・headerとソースファイルは別物らしい(16.2p1) そのためheader fileなどという用語はない ・stdio.hは処理系提供のheader ・unistd.hも処理系提供のheader ・myprog.hはソースファイル ・規格にはファイルの拡張子(.hと.cpp)についての言及無し さあmy.hはヘッダーか否か?
179 名前:デフォルトの名無しさん [2014/04/16(水) 17:23:29.68 ID:cUKcFdx2] ヘッダー/ソースっていうんじゃなくて ヘッダー/実装っていう2分だよな 規格中の言葉遣いが完全じゃないところに拘るのはちょっと。。。 ソースファイル納入を条件の仕事で下請けがヘッダファイルを除外して納入してきたらどう思う?
180 名前:KAC mailto:sage [2014/04/16(水) 17:35:03.48 ID:JwWRkONO] ソースファイルってのは、ソースコードがかかれたファイルの事。 なので、ヘッダファイルと呼ばれているものもソースファイルの一種。 ヘッダファイルというのは、 ソースファイルのうち先頭で読み込まれることを前提としたもの。 #include "my.h" void main(){ #include "my.c" }; なら、"my.h"はヘッダで、 "my.c"はヘッダじゃない。 処理系がヘッダ以外のものを提供することは前提としていないから 処理系が提供するヘッダという記載になっただけじゃ?
181 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 17:49:52.35 ID:1uhiGx2H] ソースAにグローバル変数で以下のように宣言されていて static double gdatanum=0.0; これをGetSetする関数があるのですが ソースBでSetしてソースCでGetすると値が0.0でした なぜでしょうか
182 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 17:51:21.85 ID:NuAUVtDw] Setでgdatanumに代入ができてないのだろう
183 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 17:52:54.26 ID:RlYL1+PT] >>180 >ヘッダファイルというのは、 >ソースファイルのうち先頭で読み込まれることを前提としたもの 自分の脳内定義を居丈高に主張されても >・headerとソースファイルは別物らしい(16.2p1) >・myprog.hはソースファイル この状況でmy.hがヘッダーと言う人は論理的な思考が出来ない人
184 名前:KAC mailto:sage [2014/04/16(水) 17:54:52.47 ID:JwWRkONO] >>181 GetSetする関数とそれを使う所のソース貼ってみたら?
185 名前:KAC mailto:sage [2014/04/16(水) 17:55:35.03 ID:JwWRkONO] >>183 おまえ、"ヘッダ"の意味辞書で引いてみ?
186 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 17:56:17.15 ID:1iwpwwyp] >>181 staticなんか付けたから
187 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 17:59:17.93 ID:HsjrRpyw] includeするユーザーのファイルはheader fileに限定できないから source fileと書いているだけなんじゃ。 でも、その表現だと、処理系が独自にヘッダーじゃない includeするファイルを提供することが出来ないような。
188 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 18:22:01.22 ID:RlYL1+PT] >>187 規格はmyprog.hがソースファイルだと言っているのけれど header file以外のsource fileって何? >>185 C++の話をする文脈で断りもなく 規格の用語を異なる意味で使ったらおかしいでしょ
189 名前:とんぼ ◆0ioouYq6qF8x mailto:sage [2014/04/16(水) 18:36:18.46 ID:VWOXLAN+] >>125 Java言語でもクラス変数で意味は通じると思うよ
190 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 18:38:42.19 ID:oc0x5q+M] × Java言語でもクラス変数で意味は通じる ○ Javaドカタとの会話でもクラス変数で意味は通じる
191 名前:とんぼ ◆0ioouYq6qF8x mailto:sage [2014/04/16(水) 18:52:16.09 ID:VWOXLAN+] >>190 Java言語仕様でも「クラス変数」って使われてるよ
192 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 19:19:38.95 ID:RlYL1+PT] すごく細かいことだけど JAVA()ではstatic fieldとclass variableは 両方とも用語が定義されていて意味が違う 4.12.3 A class variable is a field declared using the keyword static within a class declaration (§8.3.1.1), or with or without the keyword static within an interface declaration >>124 みたいな嘘がどこから出てくるのか不思議
193 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 19:25:22.97 ID:HsjrRpyw] >>188 C++の規格では、headerもsource fileも明確に定義されているわけではない。 #includeの定義に定義されていない(がおそらく自明な)用語として用いられているだけ。 そもそも16.2のタイトルがSource file inclusion その中で<>は指定されたheaderの内容を取り込み、 ""は指定されたsource fileの内容を取り込む とあるからタイトルからして、source fileという表現はheaderという表現を内包している。 6 A #include preprocessing directive may appear in a source file that has been read because of a #include directive in another file, up to an implementation-defined nesting limit. さらにこんなことも書いてあるが、ここでいうsource fileって<>で指定したheaderも含んでいるだろ。 headerという用語をユーザー側のファイルで使ってはいけないなんて ルールはどこにも書いていない。
194 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 19:34:33.23 ID:RlYL1+PT] >>193 都合の悪いところを読み飛ばすなよ >>178 で書いたとおり 「ソースファイルを取り込むものだけど 失敗したらheaderの取り囲み」だからタイトルが Source file inclusionなんだよ >ここでいうsource fileって<>で指定したheaderも含んでいるだろ どこからそんな妄想が? もう一度書いてやる。 >・headerとソースファイルは別物らしい(16.2p1) >・myprog.hはソースファイル この状況でmy.hがヘッダーと言う人は論理的な思考が出来ない人
195 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 19:41:22.60 ID:d9mP/+D0] 小保方みたいなこといってんじゃねーよ
196 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 19:52:33.61 ID:HsjrRpyw] >The method by which a sequence >of preprocessing tokens between a < and a > preprocessing token pair or a pair of " characters is combined >into a single header name preprocessing token is implementation-defined. ここに関しても良く分からんというか、single souce file nameの時は 実装定義とも未定義とも書いていないが。 明確に定義されないで使われている用語に関して その使われ方から類推して一般的に用いられているのと 違う意味として定義されているように解釈するのは それこそ、論理的思考ではないだろ。
197 名前: ◆QZaw55cn4c mailto:sage [2014/04/16(水) 20:01:23.76 ID:QJ8zo2+Q] >>176 お前、そんなところでちょん切るから 「A or B において A≠B」 という誤解が生じるんだ、ちゃんと全文を書け 1 A #includedirective shall identify a header or source file that can be processed by the implementation. この場合、. 「A or B において A≒B」の可能性を否定できない 「A いいかえると B」「A すなわち B」「A つまり B」と解釈する余地がある。 高等学校リーダーの初歩だからしっかり復習したまえ
198 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:12:58.87 ID:Im3wLyAK] >>197 論理の世界じゃ「AもしくはB」は排他的論理和だからな…… 「AまたはB」だと両方真でもOKだから。これはプログラムでも同じこと
199 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:13:18.78 ID:KbgAUGrE] そのあとに>>164 の使い分けが続くのに どうしてそんな曲解ができるだぜw
200 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:15:36.81 ID:1tTmzh2z] >>197 高等学校リーダーの初歩が分かっているなら 能書きは良いから、その文を和訳しろよ
201 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:20:54.95 ID:2jM3l7Be] >>198 排他的!?
202 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:41:08.27 ID:d9mP/+D0] 「1行の#includeディレクティブは唯1つの、処理系が処理できるヘッダーもしくはソースファイルを識別する(様に記述する)べきである」 そりゃそうね。ここではheaderとかsourceとか主題からはどうでもいい
203 名前:とんぼ ◆0ioouYq6qF8x mailto:sage [2014/04/16(水) 20:42:13.58 ID:VWOXLAN+] >>192 英語苦手だから間違ってるかもしれないけど Java言語では、「static フィールド = クラス変数」だと思うよ > 8.3.1.1. static Fields > ... > A static field, sometimes called a class variable, is incarnated when the class is initialized (§12.4). スレ違いごめんなさい。
204 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:42:44.40 ID:tL+eav+5] >>197 このような堅い文章で、カンマなしのorを、すなわちなんて訳さないと思いますが
205 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:44:09.48 ID:tL+eav+5] >>203 その一文だと、正式名称はスタティックフィールドという意図になると思います
206 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 20:54:52.75 ID:1tTmzh2z] >>202 なんで、 ヘッダーいいかえるとソースファイル ヘッダーすなわちソースファイル ヘッダーつまりソースファイル ってしないんだ?
207 名前:とんぼ ◆0ioouYq6qF8x mailto:sage [2014/04/16(水) 22:23:16.70 ID:VWOXLAN+] >>205 私には、正式がどうかはわかりません。 staticフィールド (staticのついてるフィールド) = クラス変数 非staticフィールド (staticのついていないフィールド) = インスタンス変数 「クラス変数」と「インスタンス変数」の方が、世間一般的な用語だと思います。 なお、「クラス変数、インスタンス変数」の用語も使われていますので、 意味は通じると思います。 Java Language Specification docs.oracle.com/javase/specs/jls/se8/html/jls-8.html スレ違いすみません
208 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 22:37:47.15 ID:2jM3l7Be] でもこの話の発端となった>>99 では「クラス変数」という表現でインスタンス変数のことも指してたし、 あんまり一般的じゃないのか?とも思った。
209 名前:デフォルトの名無しさん [2014/04/16(水) 22:51:59.76 ID:cUKcFdx2] 何の役にも立たない、どーでもいい重箱の隅のトンチクイズみたいなのばかり盛り上がるね
210 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 23:15:11.18 ID:RlYL1+PT] >>207 Java言語仕様では>>192 に示した「class variable」は 斜体つまり特別なterm。 その定義(4.12.3)が「class宣言内のstaticなフィールドおよび インターフェース宣言内のフィールド」なの。 そして何故かclass内のstaticなフィールドのみをstatic fieldと呼んで(8.3) インターフェース内のstaticなフィールドを static fieldと呼ぶ記述は見あたらない(9.3)。 ちなみに先月のJava言語仕様改訂までは static field=class variableでいいと思う
211 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 23:22:18.50 ID:tG4IqjPv] インクルードパスが通ってるところがヘッダーでそれ以外がソースファイルってことか
212 名前:デフォルトの名無しさん mailto:sage [2014/04/16(水) 23:24:08.08 ID:+Gnb3ikJ] 一般的に使われている用語の話と規格の定義を一緒にする人がいるから 規格の解釈を語ろうとする人との会話が噛み合っていない
213 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 00:43:29.79 ID:j9nnbtNK] 盛り上がってるとこ悪いけどコンパイル時定数にしたいならconstexpr使えよ
214 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 01:06:16.22 ID:471VrbUx] >>213 爺がが多いこのスレ住人はC++11は使わない C++11は完全にゆとり用だし
215 名前: ◆QZaw55cn4c mailto:sage [2014/04/17(木) 02:34:02.07 ID:7Na2DDXs] >>204 たしかに >>197 の解釈をしたいのなら同格のコンマ、がほしいところではありますね それにしても「ヘッダ」と「インクルードファイル」を分けた思想がよくわかりませんね、内容に差はないのに
216 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 02:34:56.33 ID:7Na2DDXs] 失礼、非限定用法のコンマ、としたほうがいいかな
217 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 07:53:47.81 ID:sHAbMX/D] 爺はC++すら使いませんが…。 何度注意してもmemsetでクラスを初期化しようとするし むしろ使わせてはいけない。
218 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 08:05:40.50 ID:INoT3wR+] baad f00d とかdead beef じゃ無いだけまし
219 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 09:01:27.72 ID:63MO/YQs] >>215 ヘッダはコンパイラから見て内容がほぼ固定であり、ファイルとして処理するよりも効率的な、 (たとえば規定どおりの宣言を有効にするコンパイラ内部のフラグを立てるだけ、とかいう) 実装があるかもしれない・・・ってことだと理解している。そういう実装を見たことは無いんだけど。
220 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 10:04:15.07 ID:BAGutlSP] ヘッダはファイルじゃなくてもいいんじゃなかった?
221 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 12:50:13.74 ID:WzS6AOuu] ヘッダーはファイルである必要はないよ メジャーなコンパイラの実現方式がファイルであって プログラマがヘッダーをコンパイラに追加させる仕組みが インクルードディレクトリ
222 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 15:21:05.38 ID:cqNmjTsF] ディレクティブ
223 名前:とんぼ ◆0ioouYq6qF8x mailto:sage [2014/04/17(木) 17:43:00.61 ID:yCqA9Csi] >>210 「 class variable 」の説明部分見ました。ありがとうございます。 interface のフィールドは、実質的に public static final がついた状態になるので、 あえて static フィールドとは言わないのだと私は思います。 スレ違いごめんなさい。
224 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 22:44:49.70 ID:BPlv1lov] スパゲッティつくってくる
225 名前:デフォルトの名無しさん mailto:sage [2014/04/17(木) 23:04:51.62 ID:Y7Fdq8Iy] 食いもんの方か、プログラムの方かわからんから突っ込みづらいわ
226 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 00:28:18.50 ID:fMz311pO] >>225 コードの方なら普通全力で止めに入るもんだろ……
227 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 04:04:49.92 ID:o8YE1PQa] そういや実装が見事にスパゲッティなMonacoinが近日高騰するそうですよ
228 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 04:47:38.93 ID:W8zdUC/x] そんな二番煎じの通貨では小麦も買えぬわ
229 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 06:00:04.50 ID:Mr51hVCQ] 昭和の労害:スパゲッティ 普通の人:パスタ
230 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 07:53:09.03 ID:X42XW7L4] >>226 自分に関係するなら止めるけど、関係しないなら割りとどうでもいい。 本人趣味でやってるかも知れんし。
231 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:13:22.34 ID:9F2L+G8f] >>229 スパゲッティ以外のパスタを知らない田舎者。
232 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:29:21.30 ID:DFRxgHMB] これどういうことですかね… /* g++ 4.7.2 */ #include <iostream> #include <chrono> #include <unistd.h> int main() { std::chrono::system_clock::time_point tp1; std::chrono::system_clock::time_point tp2; tp1 = std::chrono::system_clock::now(); sleep( 3 ); tp2 = std::chrono::system_clock::now(); std::chrono::milliseconds m1 = std::chrono::duration_cast<std::chrono::milliseconds>( tp2 - tp1 ); std::cout << m1.count () << " msec." << std::endl; std::time_t tt1, tt2; tt1 = std::chrono::system_clock::to_time_t( tp1 ); tt2 = std::chrono::system_clock::to_time_t( tp2 ); std::cout << std::ctime( &tt1 ) << std::ctime( &tt2 ) << std::endl; return 0; } // 3000 msec. // Fri Apr 18 00:05:57 2014 // Fri Apr 18 00:05:57 2014
233 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:31:48.36 ID:IuBLW4Yt] どうって、その情報からは お前がコミュ障ってことしかわからん
234 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:34:01.00 ID:6aub1SvC] sleep(3000)ってしようとしたのかな
235 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:35:49.18 ID:VaFc+PBF] now()で3秒空けて2回時刻取得したのに to_time_t()で文字列に変換したら差が無かったって事でしょ
236 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:38:16.45 ID:DFRxgHMB] >>235 こういう仕様なんですか?
237 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:43:43.17 ID:Ovl+7gT1] sleepは秒指定なのか? と>>234 が言ってるぞ。
238 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 08:45:19.05 ID:DFRxgHMB] >>234 >>237 <unistd.h>のsleep()は秒指定です
239 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 09:48:44.05 ID:DFRxgHMB] >>232 の std::cout << std::ctime( &tt1 ) << std::ctime( &tt2 ); を、 std::cout << std::ctime( &tt1 ); std::cout << std::ctime( &tt2 ); に変更したら上手く行きました…
240 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 10:17:59.35 ID:nz5iU1yO] そりゃぁねぇ。ctime()は結果を同じ場所に置くから。
241 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 10:57:08.78 ID:DFRxgHMB] strtok()は知ってたんですが、ctime()もそうだとは! お騒がせしました
242 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 16:59:43.47 ID:W8zdUC/x] >>240 スレッドが関わるとどうなるんだこういうの?thread_local?
243 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 17:43:11.46 ID:kmb+8Ph3] 20.11.8/2 The contents are the same as the Standard C library header <time.h>.230 The functions asctime, ctime, gmtime, and localtime are not required to avoid data races (17.6.5.9).
244 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 18:02:14.18 ID:W8zdUC/x] なる。もう使うな状態なんだな…
245 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 22:00:22.34 ID:FjJDc/SF] >.... are not required to avoid data races 変更したくても影響大で出来ないのか?
246 名前:デフォルトの名無しさん mailto:sage [2014/04/18(金) 22:57:33.82 ID:D85r3WZf] C++11時点で最新のC言語規格にスレッドは無かったし C++の規格書の中で別の規格であるC言語についてはあーだこーだ言いたくないんじゃない? 歴史を見ればCfrontやMinGWみたいにC++処理系とCランタイムが別々の開発元とかになると手の出しようが無いし
247 名前:デフォルトの名無しさん mailto:sage [2014/04/19(土) 04:36:37.42 ID:uixitbPb] ちなみにISO/IEC9899:2011でもctimeはマルチスレッド非対応
248 名前:デフォルトの名無しさん mailto:sage [2014/04/19(土) 04:38:22.41 ID:uixitbPb] そもそも内部で確保したC文字列を返す関数を使う奴は低能
249 名前:デフォルトの名無しさん mailto:sage [2014/04/19(土) 07:59:44.33 ID:mm0uPHzd] 領域解放の必要のない構造体返して来る関数全般はマルチスレッド対応してないよ。
250 名前:デフォルトの名無しさん mailto:sage [2014/04/19(土) 08:13:39.74 ID:mm0uPHzd] そもそもctimeが返して来る領域は一時的なものであるのでつかいまわす場合は、 std::cout << std::string(std::ctime(&tt1)) << std::string(std::ctime(&tt2)) ; と記述すべきところ。
251 名前:デフォルトの名無しさん mailto:sage [2014/04/19(土) 08:41:29.66 ID:aOosZTdR] >>250 激しく同意。 struct tm st = *localtime(&t); とかも良くやる。 _r 系があればそっち使うけどね。
252 名前:デフォルトの名無しさん mailto:sage [2014/04/19(土) 09:41:12.82 ID:5Hp05dG5] >>248 スレッドがない環境で作られた仕様にダメ出しして悦に入るって...