C言語なら俺に聞け(入門編)Part 116

このエントリーをはてなブックマークに追加
1デフォルトの名無しさん
C言語の入門者向け解説スレッドです。

★前スレ
C言語なら俺に聞け(入門編)Part 115
http://toro.2ch.net/test/read.cgi/tech/1368444993/
★過去スレ
http://makimo.to:8000/cgi-bin/search/search.cgi?q=%82b%8C%BE%8C%EA%82%C8%82%E7%89%B4%82%C9%95%B7%82%AF&andor=AND&sf=0&H=&view=table&D=tech&shw=5000
★教えて欲しいのではなく宿題を丸投げしたいだけなら
  ↓宿題スレ↓へ行ってください。
C/C++の宿題片付けます 164代目
http://toro.2ch.net/test/read.cgi/tech/1370255305/
★C++言語については避けてください。C++対応明記スレへどうぞ。
★分からない事をなるべく詳しく書いて下さい。
★ソースコードを晒すと答えやすくなるかもしれません。
  # 抜粋/整形厳禁、コンパイラに渡したソースをそのまま貼ること。
  # サイズが大きい場合はアップローダ等を利用してください。
http://codepad.org/C/C++の宿題片付けます 165代目
http://ideone.com/
★開発環境や動作環境も晒すと答えが早いかもしれません。
★質問者は最初にその質問をした時のレス番号を名前欄に書いて下さい。
2デフォルトの名無しさん:2013/06/14(金) 21:34:37.72
SendMessage(1, 乙, 0, 0);
3デフォルトの名無しさん:2013/06/14(金) 22:08:33.81
javaにあるunreadして内部バッファにデータ溜めるってのがあるけど
readするときそのバッファにデータがあるかどうかどうやって示しているんでしょうか?
配列からデータが無くなるっていうのがよく分かりません。
どんな状態でもデータはありますよね?配列宣言したら初期状態があるんだし。
43:2013/06/14(金) 22:19:36.90
これjavaについてなんですが
Cで実装するときはどうすればいいのかなと......
5片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/14(金) 22:23:50.14
例えば実データのサイズを表す変数をゼロにすれば、論理的にデータは空っぽになると言えるだろう。
6デフォルトの名無しさん:2013/06/14(金) 22:29:12.66
>>5
やっぱシンプルにフラグですか....
実装するとかなり面倒くさいですねこれでも
7デフォルトの名無しさん:2013/06/14(金) 22:39:08.70
有効データ量と確保量を持った構造体にまとめれば良いんじゃないの?

例えば
struct {
 int size_data; // 有効データサイズ
 int size_alloced; // 確保量
 char *data; // データ
} MY_DATA;
みたいにして
初期化は
 MY_DATA d;
 d.size_data = 0;
 d.size_alloced = 1024;
 d.data = (char *)malloc(d.size_allocated);
とし、使うときは
 char str[] = "test";
 strcpy(d.data, str);
 d.size_data = sizeof(str);
とかする。
面倒だけど。
8片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/14(金) 22:42:38.78
C言語が面倒だと思ったら、C++に移れ
9デフォルトの名無しさん:2013/06/14(金) 22:45:23.97
さどっほ
10デフォルトの名無しさん:2013/06/14(金) 22:46:37.71
やっぱC機能無さ杉だなぁ....
javaは難しいけど機能多過ぎ...
11デフォルトの名無しさん:2013/06/14(金) 22:48:38.88
「面倒 = 嫌」
だったらC++でやればいいが
「面倒 = 楽しい」
だからCに居座っているのだ
12デフォルトの名無しさん:2013/06/14(金) 22:57:02.68
C考えた人は凡人で
C++考えた人は天才肌なんだろうな
13デフォルトの名無しさん:2013/06/14(金) 23:01:25.33
メーラーやブラウザを暗黙的Intentで起動したいのですが

Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse("mailto:〜"));
startActivity(intent);

こういったやり方だとメール送信画面やURL先のブラウザが立ち上がってしまいます
暗黙的Intentでメーラーやブラウザの一覧から選ぶ、またはデフォルト起動指定されたものを
アプリアイコンから起動した時のように、初期画面で起動するにどうしたらいいでしょうか?
14デフォルトの名無しさん:2013/06/14(金) 23:20:36.48
どこがC言語やねん
マルチか?
15デフォルトの名無しさん:2013/06/14(金) 23:39:00.34
>>12
より少ないツールで目的を達する方が天才だろ
16デフォルトの名無しさん:2013/06/15(土) 00:49:26.85
ならハードウェアだけで全部実装しろ
17デフォルトの名無しさん:2013/06/15(土) 01:26:27.09
別に天才じゃなくてもいいだろ
18デフォルトの名無しさん:2013/06/15(土) 01:53:19.24
ウエハー、ドーピング、ボンディング、リフロー、レジスト、無線屋、物流、会計監査、法務を一手に手がけるアイちゃん
19デフォルトの名無しさん:2013/06/15(土) 09:26:45.82
>>12
どうみても逆
20デフォルトの名無しさん:2013/06/15(土) 10:45:56.56
GCってプログラム実行の速度に影響与えたりはしないんですか?
密かに敢行されるものなんですか?
21デフォルトの名無しさん:2013/06/15(土) 10:47:00.98
遅くなる
22デフォルトの名無しさん:2013/06/15(土) 10:49:22.48
実行されるまでは遅くならないが
実行されている最中は遅くなる
23デフォルトの名無しさん:2013/06/15(土) 10:56:34.60
スレチ
24デフォルトの名無しさん:2013/06/15(土) 10:57:59.21
>>21
なるほど
>>22
CとrubyではどっちがGC機構が発達してますか?
学校でGCを観察するプログラムを作れという課題が出ました。
25デフォルトの名無しさん:2013/06/15(土) 10:59:25.48
CにGCはない
26デフォルトの名無しさん:2013/06/15(土) 11:00:23.62
>>25
alternativeとして何がありますか?
27デフォルトの名無しさん:2013/06/15(土) 11:02:54.14
課題なら自分で調べろよ
28デフォルトの名無しさん:2013/06/15(土) 11:04:40.07
2chは便利なんで^-^;
29デフォルトの名無しさん:2013/06/15(土) 11:08:23.29
他人に聞くから課題なのでは?
自分でするなら独習でしょう。
30デフォルトの名無しさん:2013/06/15(土) 11:11:26.53
どんな超理論だよw
自分でするから課題だ
31デフォルトの名無しさん:2013/06/15(土) 11:15:55.33
QZ爆死
32デフォルトの名無しさん:2013/06/15(土) 11:19:05.20
「2chで聞きなさい」という課題なのかもw
33デフォルトの名無しさん:2013/06/15(土) 11:45:59.53
QZ焦る
34デフォルトの名無しさん:2013/06/15(土) 11:46:37.80
そんなことより、おまえら早くこれ完成させてください
https://github.com/ashie/gtkimcocoa
35デフォルトの名無しさん:2013/06/15(土) 11:56:33.84
やっぱりQZは馬鹿だな
36デフォルトの名無しさん:2013/06/15(土) 17:49:48.16
前々から疑問だったんだけど、QZってなんて読むの?
やっぱり、Q = く、Z = ず だから「くず」とでも読むのかな?
37デフォルトの名無しさん:2013/06/15(土) 17:58:34.77
酉に読み方なんか元々ない
38デフォルトの名無しさん:2013/06/15(土) 18:10:17.92
クズだからそれにふさわしいトリップになったんだなw
39デフォルトの名無しさん:2013/06/15(土) 19:42:57.55
40デフォルトの名無しさん:2013/06/15(土) 20:17:24.94
whileもforも繰り返し制御文なのに
forはberak;できないのは何故?
41デフォルトの名無しさん:2013/06/15(土) 20:18:22.78
continueと勘違いしてね?
42デフォルトの名無しさん:2013/06/15(土) 20:20:27.78
>>40
できないの?
43デフォルトの名無しさん:2013/06/15(土) 20:21:05.81
>>40
berak; は出来ないよ
break; なら出来るけど
44デフォルトの名無しさん:2013/06/15(土) 20:21:49.84
>>41
そうでした....すいません。
continue文が無いのとあるのでは便利さは格段に違いますかね?
continue使いたいんですけど使いどころが分からなくて。
45デフォルトの名無しさん:2013/06/15(土) 20:23:25.88
話がみえない。
forでもwhileでもbreak, continue両方使えるけど。
46デフォルトの名無しさん:2013/06/15(土) 20:27:41.03
>>45
forでcontinueを使ったときの意味はご存知か?
47デフォルトの名無しさん:2013/06/15(土) 20:28:30.41
>>45
breakとcontinueの違いってなんですかね?
一緒じゃないですか?
処理をしないんですから。
48デフォルトの名無しさん:2013/06/15(土) 20:30:24.50
釣りだな
49デフォルトの名無しさん:2013/06/15(土) 20:31:49.59
>>46 >>47

>>40 >>44 を見てると機能の差じゃなくて有る無しを気にしてるように見えるけど。
50デフォルトの名無しさん:2013/06/15(土) 20:35:08.93
すいません
berakにしてましたw

ただcontinueもあったことに築き不図
どう違うんだろうかと思っただけです。
そこらへん触れてなくてすいません。
51デフォルトの名無しさん:2013/06/15(土) 20:58:25.28
>>50
何もしない
for (i=0; ; i++)
  break;

無限ループ
for (i=0; ; i++)
  continue;
52デフォルトの名無しさん:2013/06/15(土) 21:14:20.31
この手のド初心者に for の変則形など見せても混乱するだけ
53デフォルトの名無しさん:2013/06/15(土) 21:37:35.37
gotoほどじゃないけど、continueも嫌う奴いるんだよな
そんでアホみたいにネスト深くしてくの
54デフォルトの名無しさん:2013/06/15(土) 22:05:37.55
関数記述で return を1箇所にまとめるか、複数個所で分散してるか
55デフォルトの名無しさん:2013/06/15(土) 22:12:47.07
ifの{ はifと同じ行に記述するか次の行に記述するか
56デフォルトの名無しさん:2013/06/15(土) 22:55:41.34
周波数を自由に変えてスピーカーに出力する簡素なソフトを
作りたいんですがVC++かmfcで作るとどういう命令を使うか
ヒントください。
57デフォルトの名無しさん:2013/06/15(土) 22:57:27.89
リアルタイムに出力するなら
DirectSoundを調べると良い

単にwavファイルを作れればいいのなら
普通のファイル操作関数とsinでおk
58片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/15(土) 22:58:39.57
>>56
waveOut*関数かDirectSound
59デフォルトの名無しさん:2013/06/15(土) 23:03:42.39
waveOut*は互換性のため残されてる古いAPIなので
60片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/15(土) 23:04:13.06
NT系ならBeepという関数も使える
61デフォルトの名無しさん:2013/06/15(土) 23:27:33.39
簡素なやつを作るだけんら古いAPIでよかろうもん
62デフォルトの名無しさん:2013/06/16(日) 04:59:22.30
>>60
9x系現役乙
63デフォルトの名無しさん:2013/06/16(日) 10:36:41.28
>>26
BoehmGC
64デフォルトの名無しさん:2013/06/16(日) 15:19:28.14
機械語にあるBCD演算命令を使うCの記述方法はありますか?
65デフォルトの名無しさん:2013/06/16(日) 15:21:50.08
>>64
ないよ。
66デフォルトの名無しさん:2013/06/16(日) 15:31:01.99
BCD演算命令は遅いよ
全く使われないから、手抜きされてる
67デフォルトの名無しさん:2013/06/16(日) 15:33:40.58
まずどこの環境かを聞くべき
インラインアセンブラでもできるんじゃないの?
68デフォルトの名無しさん:2013/06/16(日) 15:43:22.58
BCD命令はx64ではobsoleteなので
もう存在自体を忘れた方がいい
69デフォルトの名無しさん:2013/06/16(日) 23:41:49.32
アク禁になったらtor使っても書き込めないのは何故ですか?
2chに書き込むプログラム作ったんですがアク禁なんで書き込めない。
70デフォルトの名無しさん:2013/06/16(日) 23:58:49.84
tor の出口がたまたまアクセス禁止になっているだけかと
71デフォルトの名無しさん:2013/06/17(月) 00:06:06.78
てことはtorを使えば書き込みし放題なんでしょうか?
それに対する対処とかしてるんですか?2chって。
72デフォルトの名無しさん:2013/06/17(月) 00:10:52.33
たまたま出口がアク禁かもしれませんが
何回チャレンジしても書き込めません。
そういう対策してるんですか?2chでは。
今は携帯からですが。
73デフォルトの名無しさん:2013/06/17(月) 00:24:44.27
torは特定の板以外はだめじゃなかった?
74デフォルトの名無しさん:2013/06/17(月) 00:39:58.97
>>73
なるほどー
荒らされないように考えてるんだな2chも。
75デフォルトの名無しさん:2013/06/17(月) 15:07:41.89
do {
なんたらかんたら
} while(0);

こんなんなんか意味あるんすか?
76デフォルトの名無しさん:2013/06/17(月) 15:32:48.17
>>75
PHPユーザーが想定する優れたCプログラマ、には意味があるらしい
http://php.net/manual/ja/control-structures.do.while.php

俺はCとPythonな人間なんで、意味なんか見いだせないけどね
77デフォルトの名無しさん:2013/06/17(月) 15:44:03.58
マクロで複文を扱うときに
#define XXX() do { 複文 } while(0)
こう書くと

if (cond) XXX(); else ・・・;

if (cond) {XXX();} else {・・・;}

どっちの形で書かれても動く。
78デフォルトの名無しさん:2013/06/17(月) 15:55:04.63
>>75
goto 禁止対策
79デフォルトの名無しさん:2013/06/17(月) 15:56:55.67
マクロにセミコロンを含めないのがミソ
80デフォルトの名無しさん:2013/06/17(月) 16:06:27.37
>>77>>78
thx
goto回避という事は、シーケンスな処理の場合のエラーとかですね?
do {
if(処理1()==FAIL) break;
if(処理2()==FAIL) break;
if(処理x()==FAIL) break;
} while(0);
てな感じかな?
処理に待ちが入る場合はcallback関数使うと思うので、あまり出番はないかもしれないですね。
マイコン組込みでは有用かも?
81デフォルトの名無しさん:2013/06/17(月) 16:07:10.90
ローカルスコープ作るのに、ぎょっとさせない意図で
do { ... } while(0) で囲んだこともあった。 が、今は素直に { } で囲んでるな
82デフォルトの名無しさん:2013/06/17(月) 16:56:54.99
>>76
thx 御礼が抜けました。 PHPという事で誤爆かと思いました w
goto回避だけで無く、処理を通過した最後のComplete()処理が目玉という事ですね。
83デフォルトの名無しさん:2013/06/18(火) 21:30:45.91
関数の中でmain関数内で宣言された配列を使うのは無理ですかね?

#include<stdio.h>
void abc(int x,char y);
int main(void)
{
char str[100];

}
void abc(int x,char y)
{
str[x]=y;
}


配列の受け渡しは引数が面倒臭いので
省略したいです。
84デフォルトの名無しさん:2013/06/18(火) 21:34:47.03
グローバル変数にすればいいじゃん
85デフォルトの名無しさん:2013/06/18(火) 21:37:50.07
>>84
その方法がありましたか。
ありがとうございます。
86デフォルトの名無しさん:2013/06/18(火) 21:48:16.87
まあな。天才だからな
87デフォルトの名無しさん:2013/06/19(水) 01:13:46.89
>>83
どこが面倒だって?

static void abc(int x, char y, char * str)
{
str[x] = y;
}
88デフォルトの名無しさん:2013/06/19(水) 01:53:23.82
>>83
> 配列の受け渡しは引数が面倒臭い

ttp://ideone.com/MYrF6V
89デフォルトの名無しさん:2013/06/19(水) 10:17:22.66
>>88
うわぁ、めんどくさい奴〜
90デフォルトの名無しさん:2013/06/19(水) 19:09:20.14
>>84
グローバル変数とか死ねばいいのに
91デフォルトの名無しさん:2013/06/19(水) 19:51:19.78
代入できる関数ってありますか?

abc()=3;
int i;
i=abc();

こんな感じです。
配列は両側で代入できるから関数では無理ですか?
92デフォルトの名無しさん:2013/06/19(水) 19:52:33.61
Cだと無理
C++なら戻り値を参照にすればできる

ポインタを返して

*abc() = 3;
int i;
i = *abc();

とするのであればCでも可能
93デフォルトの名無しさん:2013/06/19(水) 19:56:19.84
>>91
ttp://ideone.com/ewvA9A

これくらいしか思いつかん
94デフォルトの名無しさん:2013/06/19(水) 19:57:49.83
関数型マクロなら
95デフォルトの名無しさん:2013/06/19(水) 20:03:40.60
関数ポインタ
96デフォルトの名無しさん:2013/06/19(水) 20:13:52.31
>>94
ttp://ideone.com/CoipE7
こういうことか
97デフォルトの名無しさん:2013/06/19(水) 20:18:22.43
なぜこうしない
#define abc() (*f())
98デフォルトの名無しさん:2013/06/19(水) 20:24:04.42
>>97
ああ、関数のカッコの方が * よりも優先度が高いのだったか。
ttp://www.bohyoh.com/CandCPP/C/operator.html

それならそれでいいね。
99デフォルトの名無しさん:2013/06/19(水) 20:25:57.36
おっと>>96の修正
ttp://ideone.com/BtfEbS
100デフォルトの名無しさん:2013/06/19(水) 20:27:41.10
ランタイムで配列を宣言する方法ってありますか?

配列の名前を入力
str
型を入力
int
要素数
10
作成しました int str[10]


無理ですか?
101デフォルトの名無しさん:2013/06/19(水) 20:27:51.66
>>98
それでいい、じゃなくてそうじゃないといけない
優先順位の問題があったとしても (*(f())) としないと
後置インクリメントが意図しない動作を起こすから
102片山博文MZパンク ◆0lBZNi.Q7evd :2013/06/19(水) 20:46:06.00
>>100
構造体配列に名前や型のデータを保存、実データはmallocで確保
103デフォルトの名無しさん:2013/06/19(水) 20:48:59.95
>>100
どうやって使うつもりなの?
104デフォルトの名無しさん:2013/06/19(水) 20:50:32.51
>>100見て、BASICインタプリタ作りたくなってきたぜ…
105デフォルトの名無しさん:2013/06/19(水) 20:55:01.09
C言語インタプリタ作っておねがい
106デフォルトの名無しさん:2013/06/19(水) 20:57:32.10
>>104
関係あるの?
107デフォルトの名無しさん:2013/06/19(水) 21:00:40.05
>>101
なるほど。>>96はabc()++;するとコンパイルエラーになる。うかつだった。
ありがとう。

修正
ttp://ideone.com/n8G9Z7
108デフォルトの名無しさん:2013/06/19(水) 21:02:03.57
>>105
本当にCが必要なのかを慎重に検討すべき
109デフォルトの名無しさん:2013/06/19(水) 21:02:31.24
こういう危険性があるから
素人はマクロに手を出しちゃいけないよという実例
110デフォルトの名無しさん:2013/06/19(水) 21:37:42.53
>>100
配列とほぼ同等なもの(ポインタ+メモリ確保)を作ることはできる。
厳密な意味で配列とイコールなものをランタイムには作れない。
111デフォルトの名無しさん:2013/06/19(水) 21:44:27.02
インタプリタが作りたいのかな
構文解析がんばれ
112デフォルトの名無しさん:2013/06/19(水) 21:59:45.83
>>105
あるじゃん
113デフォルトの名無しさん:2013/06/19(水) 22:27:02.72
>>100
こんな感じだろうか
ttp://ideone.com/2iRLeD
114デフォルトの名無しさん:2013/06/19(水) 23:55:30.76
>>100
array[n] = *(array + n)を利用すれば
配列っぽいものを動的に作れる
115 ◆QZaw55cn4c :2013/06/20(木) 01:23:48.07
116デフォルトの名無しさん:2013/06/20(木) 03:22:40.21
main関数の外で宣言したaという変数と
main関数の中で宣言したaという変数がある場合

main関数の中で両方を別ものとして
読み書きするにはどうすればいいですか?
117デフォルトの名無しさん:2013/06/20(木) 03:49:44.59
mainの中の変数が参照される。素直に名前を変えるか、名前空間を使いましょう
118デフォルトの名無しさん:2013/06/20(木) 03:50:58.63
::a
119デフォルトの名無しさん:2013/06/20(木) 04:21:29.15
>>117>>118
スレ違い。
120デフォルトの名無しさん:2013/06/20(木) 07:30:58.80
>>116
Cだとできないので名前を変えよう
C++なら::aが外、aが中
121デフォルトの名無しさん:2013/06/20(木) 08:12:38.62
>>116
int a;
int* pa = &a;

int main(){
 int a;

 *pa = 1:
 a = 2;
 ...
122デフォルトの名無しさん:2013/06/20(木) 10:33:57.68
名前変えたほうが混乱しないよ
123デフォルトの名無しさん:2013/06/20(木) 14:36:08.66
混乱するのは低能だけ
124デフォルトの名無しさん:2013/06/20(木) 15:42:12.76
トリッキーなコードを書くのが格好いいと思ってる馬鹿が居るような気がする
125デフォルトの名無しさん:2013/06/20(木) 15:47:45.18
鳥なのかサルなのか馬なのか鹿なのかコモドオオトカゲなのかはっきりしろ
126デフォルトの名無しさん:2013/06/20(木) 15:56:48.32
コドモドラゴンてのがいてだな
127 ◆QZaw55cn4c :2013/06/20(木) 16:13:12.08
いやむしろRhinogradentia/鼻行類のほうが
128デフォルトの名無しさん:2013/06/20(木) 18:06:49.04
鳥なのかサルなのかコウノトリなのかカッコウなのか馬なのか鹿なのかはっきりしろ
129デフォルトの名無しさん:2013/06/20(木) 18:57:17.50
鳥+ウッキーでトリッキーですかなるほど
130デフォルトの名無しさん:2013/06/20(木) 22:56:57.47
ふむふむ
131デフォルトの名無しさん:2013/06/21(金) 03:34:14.13
馬鹿というのは、馬や鹿みたいな知能の奴という意味ではなく
馬と鹿の区別をつけられない奴のことだと最近知った俺だった
132デフォルトの名無しさん:2013/06/21(金) 11:15:17.08
133デフォルトの名無しさん:2013/06/21(金) 15:36:45.64
iMac買ったんでC#でプログラミングしてみた。これ「\」と「_」の入力が罠すぎるだろ
http://engawa.2ch.net/test/read.cgi/poverty/1371785765/l50
134デフォルトの名無しさん:2013/06/21(金) 23:26:53.83
/の逆と\ってお互い一緒らしいですが違いあるんですか?
135デフォルトの名無しさん:2013/06/22(土) 00:54:36.09
ない
136デフォルトの名無しさん:2013/06/22(土) 00:57:52.11
バックスラッシュと円マークで
見た目が違う
呼び方が違う
文字コードによっては別々に割り当てられてるので全く別の文字
137デフォルトの名無しさん:2013/06/22(土) 01:03:30.97
たとえ表記上¥しかでなくても、バックスラッシュのところを打つ
138デフォルトの名無しさん:2013/06/22(土) 02:37:08.14
Visual Studio 2010を使用しています。
サンプル2ではエラーが出るのですが、サンプル1でエラーが出ないのはどうしてでしょうか。
よろしくお願いします。

●サンプル1
#include <stdio.h>
int a = 10;
int a;
int main(void)
{
return 0;
}

●サンプル2
#include <stdio.h>
int a = 10;
int a = 20;
int main(void)
{
return 0;
}
139デフォルトの名無しさん:2013/06/22(土) 02:48:56.86
>>138
まずエラーを書こう
140138:2013/06/22(土) 03:03:03.46
>>139
すみません。以下の様なエラーが出ます。

> 'a' : 再定義されています。2 回以上初期化されています。
> 'a' の宣言を確認してください。

サンプル1では再定義と言われないのは何故なのか気になりました。
よろしくお願いします。
141デフォルトの名無しさん:2013/06/22(土) 03:18:17.85
>>140
情報の後出しウザい消えろゴミクズ
142デフォルトの名無しさん:2013/06/22(土) 04:19:29.71
138: サンプル2でエラーがでる
139: エラーの詳細は
140: これこれです
141: 後出しうざい、ゴミクズ

真面目な質問者と、ゴミクズだな

>>138
サンプル1は仮定義って言うんだよ
6.9.2. External object definition
2 A declaration of an identifier for an object that has file scope without an initializer, and
without a storage-class specifier or with the storage-class specifier static, constitutes a
tentative definition.
143138:2013/06/22(土) 04:26:32.12
>>142
仮定義という概念を初めて知りました。
ありがとうございました。
144デフォルトの名無しさん:2013/06/22(土) 05:33:29.65
>>143
いいから二度と来るなよ。
社会のお荷物君。
145デフォルトの名無しさん:2013/06/22(土) 07:34:32.13
何で普通の質問にそんな噛み付くわけ?
146デフォルトの名無しさん:2013/06/22(土) 08:49:10.02
>>145
>>141>>144自身が「ゴミクズ」であり「社会のお荷物君」だからだろ
「投影性同一視」と言う
147デフォルトの名無しさん:2013/06/22(土) 08:52:47.25
http://ameblo.jp/terzo-001/entry-11041919810.html

>例えば、部下に「お前は、自分勝手で自己中心的だ」という非難を浴びせている
>上司を見ることがあると思います。
>よく知っている人から見ると、「自分勝手で自己中心的なのは、他でもない自分自身の
>ことではないか」ということになるのですが、【投影性同一視】はそういう自分のいやな部分を
>見ようとはせずに、そのいやな部分を他人に押しつけるのです。
>そして、いやな部分を押しつけた他人に向かって「お前は、自分勝手だ」と言って非難するのです。

>このように自分のことを棚に上げて、他人を非難することで、自分の中にある嫌悪すべき部分と
>直面することを避けているのです。
>つまり、自分自身と向き合う代わりに、他人という鏡と向き合って、他人を攻撃するのです。
>ですから、【投影性同一視】を行っている人が、「お前は、×××だ!」と言ったとき、「お前は」と
>いう部分を「私は」に置き換えてみれば、言っていることがそっくりそのまま患者自身にぴったりと
>当てはまることがあるのです。

>しかし、【投影性同一視】を行っている人は「私は、自分勝手だ!」とは言いません。
>その代わりに「お前は、自分勝手だ!」「お前は、自分のことしか考えていないじゃないか!」と
>言って、周囲の人たちを非難するのです。
148デフォルトの名無しさん:2013/06/22(土) 10:50:37.24
俺を倒せる質問者はまだか
149デフォルトの名無しさん:2013/06/22(土) 10:52:58.91
倒れてる奴は、倒せない。

これ、豆な (w
150デフォルトの名無しさん:2013/06/22(土) 12:18:52.73
>>145
情報の後出しは普通じゃないよ
荒らしが荒れやすい下地を作る手段の一つ
151デフォルトの名無しさん:2013/06/22(土) 12:50:08.31
>>150
ソース晒してるんだから、そのくらいすぐ分かるだろ
152デフォルトの名無しさん:2013/06/22(土) 12:58:08.22
必要な情報を判断できるなら初心者じゃないよ
153デフォルトの名無しさん:2013/06/22(土) 13:12:02.51
>>138だけで回答出来ないゴミクズってなんのために生きてるの?
154デフォルトの名無しさん:2013/06/22(土) 13:16:19.31
「制限」や「要求項目」の後出しは初心者とか関係なくもめる

だが >>141 はただ荒らすために生きているので
これ以上さわってはいけません
155デフォルトの名無しさん:2013/06/22(土) 13:55:20.43
>>151
まあ、それはそうだが、エラーメッセージぐらい貼れよといつも思う。

次スレ立てる人は >>1 に入れといて欲しいな。
156デフォルトの名無しさん:2013/06/22(土) 14:07:39.95
エラーの意味も分かってないんだろ。

エラーっていわば注意や警告だからな。

学校や会社で何度注意されても繰り返すゴミクズと同じタイプ。
157デフォルトの名無しさん:2013/06/22(土) 14:09:26.02
よかったな>>138
お前の狙い通り荒れてきたぞ
158デフォルトの名無しさん:2013/06/22(土) 14:16:32.84
エラーの意味がわからないド初心者は >>140 みたいな疑問を持たない

フローチャートで論点と流れを整理する癖を付けろ
口から糞を垂れるのはその後にしろ
159デフォルトの名無しさん:2013/06/22(土) 14:52:34.13
フローチャートって
160デフォルトの名無しさん:2013/06/22(土) 15:05:27.72
>>138はプログラミング以前に精神構造に問題があるんじゃないかな
テストで間違えたところをきく場合も、問題用紙だけ持ってきて「40点でした。何がいけなかったのですか?」ときくのと同じ
初心者以前に知恵遅れ
勿論一般社会では迷惑な存在
161デフォルトの名無しさん:2013/06/22(土) 15:10:03.75
それよりも迷惑な人がいる
162デフォルトの名無しさん:2013/06/22(土) 15:19:26.69
確かにいるな
163デフォルトの名無しさん:2013/06/22(土) 15:26:56.79
これ系のヴァカはどうせ全く調べずに質問してるんだろ。
普通は原因究明のために目に入る情報から何とか手掛かりを探そうとするからな。

そうすると必然的にエラーメッセージを調べることになる。
164デフォルトの名無しさん:2013/06/22(土) 15:35:01.99
というわけで俺様の好みに合う口当たりの良いまろやかな一口サイズの質問を持った質問者はまだか
165デフォルトの名無しさん:2013/06/22(土) 15:56:45.50
MinGW gcc 4.6.2 の qsort を使ったときにソートにかかる時間が最悪になるデータの並びを作成する方法を教えて下さい
いつも早いので本当にオーダーが O(n^2) になることがあるのか興味があります
166デフォルトの名無しさん:2013/06/22(土) 16:10:31.35
>>138とその周辺(回答してる屑、叩いてる池沼、擁護してる基地害)は迷惑だから出ていってくれ
もう二度と来なくていいよ
167デフォルトの名無しさん:2013/06/22(土) 17:28:48.49
スルーすりゃいいんちゃう
お前にも正義はない
168デフォルトの名無しさん:2013/06/22(土) 18:06:05.19
入門スレで初心者相手にえばり散らす奴は出て行ってくれよ
169デフォルトの名無しさん:2013/06/22(土) 19:26:29.87
自己顕示欲を満たすためだけに回答する奴も出ていってくれよ
170デフォルトの名無しさん:2013/06/22(土) 20:30:54.60
Everyone, get out of here!
171デフォルトの名無しさん:2013/06/22(土) 21:35:18.29
客先常駐で偉そうな客先社員に見下されて何の経験にもならない雑用を押し付けられて精神病むのがオチw
30代で常駐先がなくなって未経験の異業種で人生やり直すのがオチw
常駐先企業の人件費抑制に利用されただけの人生だったな残念w

システムエンジニアになろう〜新入社員研修編〜
ttp://www.nicovideo.jp/watch/sm4010880
172デフォルトの名無しさん:2013/06/22(土) 21:37:20.11
自己紹介はマ板でやれアホ
173デフォルトの名無しさん:2013/06/22(土) 21:39:27.59
俺はサイコアピールしてるから
何か扱い間違えるとヤバイかもみたいな認識されてるらしく
あまり酷い扱いはされないよ
174デフォルトの名無しさん:2013/06/23(日) 00:36:01.21
>>165
5,4,3,2,1 を昇順にしてみればいいんじゃね
175デフォルトの名無しさん:2013/06/23(日) 01:49:39.49
qsortの中身がそのままクイックソートだとは思えないけど
まともな実装なら n が小さいと挿入ソート切り替えたり、
あるいはそもそも最悪実行時間を嫌ってマージソートを使ってたりするはず
176デフォルトの名無しさん:2013/06/23(日) 02:52:53.57
>>175みたいに推測でものを言うksって何なの?
キチガイ女の集まるメンヘラ板ならまだしもム板なのに
177 ◆QZaw55cn4c :2013/06/23(日) 02:53:59.29
>>176
Knuth の聖書を読め推測ではなくて「当たり前」
178デフォルトの名無しさん:2013/06/23(日) 10:13:01.61
「当たり前」では無いがglibcのqsortが基本はマージソートなのは良く知られている。
知らないのは素人
179デフォルトの名無しさん:2013/06/23(日) 10:42:54.64
マージはメモリ効率悪いだろ
180デフォルトの名無しさん:2013/06/23(日) 10:58:26.44
qsort以外のソートを自作してはならないという不幸な時代に生まれさえしなければ
181デフォルトの名無しさん:2013/06/23(日) 11:21:32.00
不安定なソートは好きじゃない
182デフォルトの名無しさん:2013/06/23(日) 11:48:10.77
>>179
そう思うんなら、glibcの開発mlに乗り込んで喧嘩売って来いよ。
183デフォルトの名無しさん:2013/06/23(日) 11:53:07.46
>>182
マージソート知らないのか?マージソートはメモリー効率悪いよ。
184デフォルトの名無しさん:2013/06/23(日) 11:59:08.52
>>183
「基本は」って書いただろ。ソース読んでから言いがかりつけろよ。
185デフォルトの名無しさん:2013/06/23(日) 12:04:05.74
>>184
基本はとお前が書こうか書くまいが、マージソートはメモリー効率悪いよ。
知らなかったんだろ?素直に認めろよ。
186デフォルトの名無しさん:2013/06/23(日) 12:16:57.54
>>185
お前本当に頭悪いな。マージソートがメモリーを沢山使うのは常識だが、glibcはそれでも「効率」はマージソートの方がいいと判断して基本(メモリー潤沢な場合)はマージソートを採用している。
それに対して周回遅れの言いがかりつけんじゃねー

効率: 機械から得られる有効な仕事が,それを得るために機械に加えたエネルギーに対して占める割合をいう。
187デフォルトの名無しさん:2013/06/23(日) 12:18:45.53
2chは潤沢なリソースを誇るので
このような非効率なプロレスに利用しても何ら問題ない
188デフォルトの名無しさん:2013/06/23(日) 12:19:37.26
>>186
だからマージソートはメモリー効率悪いだろ。
189デフォルトの名無しさん:2013/06/23(日) 12:30:05.35
>>188
効率とは使用するリソースに対する得られる効果。
使用するメモリーに対して期待する効果が大きいと判断したから、マージソートが採用されている。
190デフォルトの名無しさん:2013/06/23(日) 12:36:42.61
何の知識もないので、1からCを始めるのにおすすめのサイトを教えてください。
191デフォルトの名無しさん:2013/06/23(日) 12:37:12.55
>>189
詭弁だな。
192デフォルトの名無しさん:2013/06/23(日) 13:06:38.64
>>191
>>173の周回遅れのツッコミが、とても痛い事にきづいたか?
193デフォルトの名無しさん:2013/06/23(日) 13:15:38.44
そんなんだから女にモテないんだよおまえら
194デフォルトの名無しさん:2013/06/23(日) 13:21:18.35
>>193
マージソートはメモリー効率悪いよね。
195デフォルトの名無しさん:2013/06/23(日) 13:27:34.58
自分は富豪的プログラミングしてるのにメモリ効率とか言い出すアホいるよなw
196デフォルトの名無しさん:2013/06/23(日) 13:32:19.18
いいんだよ そのほうがカッコイイんだよ
ケータイやゲーム機の色にこだわるのと一緒だよ
わかるだろ?
197デフォルトの名無しさん:2013/06/23(日) 13:35:15.93
メモリー効率が悪いことが原因で、処理が出来なかった経験があるのかな?
198デフォルトの名無しさん:2013/06/23(日) 13:38:27.53
富豪的プログラミングをしているつもりが、
富豪ではないからスパコンやフルカスタムが必要になると詰むんだよな
199デフォルトの名無しさん:2013/06/23(日) 13:56:30.58
メモリかつかつな状況下で 標準の qsort を選択するものなの?
200デフォルトの名無しさん:2013/06/23(日) 14:05:57.13
そういうマシンでソートするのが間違い
201デフォルトの名無しさん:2013/06/23(日) 16:31:54.78
>>197
「マージソートのメモリー効率がわるいこと知ってる俺 SUGEEE、おめーらそんな事知らない
だろう」って事だろ。

で、「ハァ、(そんな事誰でも知ってるし) それがどうかしたのか」と言われて、逆切して粘着。

まあ、良くある話。
202デフォルトの名無しさん:2013/06/23(日) 17:32:09.05
>>201
全然違うわw

「マージはメモリ効率悪いよね(ぼそ)」
「glibcはなんたらかんたら!!!」
「マージはメモリ効率悪いよ(はっきり)」
「glibcは頑張ってんだ!!!」

こういう話です。
203デフォルトの名無しさん:2013/06/23(日) 17:32:13.12
マージソートは安全じゃないからね
メモリを確保できない場合は回復不能なエラーになる
クイックソートならそうはならない
204デフォルトの名無しさん:2013/06/23(日) 17:41:24.79
>>202
> 逆切して粘着。

君、もういいよ。
205デフォルトの名無しさん:2013/06/23(日) 17:53:43.59
>>203
C言語を使用している人間の発言とはとうてい思えない。
mallocがNULLを返したらクイックソート使ったらいいじゃん。
回復余裕じゃん。
206デフォルトの名無しさん:2013/06/23(日) 17:55:30.17
>>205
そんな内容でいちいちageんな
207デフォルトの名無しさん:2013/06/23(日) 17:56:48.64
Qsort killer は手に余るってことでおk?
208デフォルトの名無しさん:2013/06/23(日) 18:02:12.98
>>202
全然ちがうわ
オレ: glibcは(メモリ十分なら)基本マージソート
周回遅れ: マージソートはメモリ効率悪いだろ
209デフォルトの名無しさん:2013/06/23(日) 18:03:37.13
>>205
バカなやつだな
メモリ確保できたときの無駄を許せるなら
おまえはCをやめてVBAとかもっと手頃な言語やった方がいい
はっきりいって向いてないよ
210デフォルトの名無しさん:2013/06/23(日) 18:07:57.66
>>209
なにをゆってるんだ。回復不能は誤りだろ、それについては認めろよ。
バカはお前だハゲ。はい勝利。
211 ◆QZaw55cn4c :2013/06/23(日) 18:25:41.64
誰もシェルソートを愛してくれないのですか(泣)
212デフォルトの名無しさん:2013/06/23(日) 18:30:24.94
>>210
誤りじゃないよ
メモリをいくら確保すればメモリが足りてるかテストできない
さらにテストしたメモリを解放してもすぐに同じだけ全て再利用できるとは限らない
213デフォルトの名無しさん:2013/06/23(日) 18:34:51.85
>>212
は?何言ってんだバーカ。はい論破。
214デフォルトの名無しさん:2013/06/23(日) 18:36:55.67
>>211
シェルソートは難しいぞ。お前実装できんの?
215デフォルトの名無しさん:2013/06/23(日) 19:14:27.63
とこのように
あるごりずむを覚えたての自称上級者が延々とオナニーを始めるので
ソートの話題をふるのは禁止です
216デフォルトの名無しさん:2013/06/23(日) 19:19:05.65
別にソートを実装してくれというわけじゃないんだが
争ってる奴らはバカなんだろうな
217デフォルトの名無しさん:2013/06/23(日) 19:20:07.80
ゲーム製作をしたくてプログラムを学ぼうと思うのですが、
MicrosoftVisualC++って2012使ったほういいんですかね?
2010までしか説明していないサイトが多いのでどうすればいいのか迷ってます
218デフォルトの名無しさん:2013/06/23(日) 19:21:29.99
ゲーム作るならMinGWがオススメだよ
219デフォルトの名無しさん:2013/06/23(日) 19:22:11.90
プログラムだけできても絵が描けないとゲームはできないよ。
220デフォルトの名無しさん:2013/06/23(日) 19:25:49.97
それは素人の発想
ゲームは本来文字情報だけで十分なんだよ
221デフォルトの名無しさん:2013/06/23(日) 19:30:29.06
2010と2012の二択だったらどうなります?
222デフォルトの名無しさん:2013/06/23(日) 19:37:29.52
>>217
ハードやれ
とりあえずドラム叩きあたりからでいい
人を楽しませるには自然現象の全てを使い切れ

ここを忘れた連中こそゲーム業界のやませだ
223デフォルトの名無しさん:2013/06/23(日) 19:40:45.89
何を作りたいかによるけど
まずはツクールとかウディタとか
そういうお手軽で不自由なツールをさわっておくのがよい
224デフォルトの名無しさん:2013/06/23(日) 19:42:23.77
>>217
どんなゲーム作るの?
勉強してもFF13みたいなやつは個人では無理だと思うよ
225デフォルトの名無しさん:2013/06/23(日) 19:44:11.70
>>220
じゃあ文字情報だけのゲームで食っていけるだけの利益出してみろや
ドラクエ以上の本数売ってみろや

何も知らない 素人 が知ったかすんな
226デフォルトの名無しさん:2013/06/23(日) 19:53:34.40
プログラムだけできても絵が描けないと売れるゲームはできないよ。
227デフォルトの名無しさん:2013/06/23(日) 19:57:10.34
作曲も大事だね
228デフォルトの名無しさん:2013/06/23(日) 19:58:17.64
絵を描くにも、ドッターみたいな特殊技能がいるし
229デフォルトの名無しさん:2013/06/23(日) 20:02:55.99
>>225
バカか?
商業ゲームの話は誰一人してないぞ
レスの流れを読むぐらいのことはしてから喋れよ
230デフォルトの名無しさん:2013/06/23(日) 20:12:57.44
>>224
ツクール的な簡易グラでやりたいと思ってます
もしかしてRuby勉強したほうがいいんですかね
231デフォルトの名無しさん:2013/06/23(日) 20:13:54.58
>>229
こいつ馬鹿か?
商業ゲーム作ってる企業は面白いゲーム作ろうと思って作ってんだよ
しかも全員プロだ
そのプロ共が30年近くかけてたどり着いた回答が今の美麗なグラフィックをバリバリ使った
音楽もオーケストラ並のゲームだ
チャラチャラプログラマ気取りで2chに書き込んでるお前のような奴の言うことより
30年近い実績の上に成り立ってる商業ゲームのほうがよっぽど説得力があるんだよ
232デフォルトの名無しさん:2013/06/23(日) 20:24:32.40
>>231
消費者はそう思ってない
またグラフィックだけのクソゲーか
と飽き飽きしてる
それも当然だグラフィックしか売りがなければ
暫くすればすぐによりグラフィックが優れたゲームが作られる
無意味なんだよ今の業界がやってる仕事はね
誰の記憶にも残らないすぐに最新作に上書きされる為だけにゲームを量産している
あまりにも不毛だ
233デフォルトの名無しさん:2013/06/23(日) 20:27:12.90
フルオーケストラ、最後に聴きに行ったのは今年の2月だったかな
1回きりでも諭吉使う価値あるんだよねえ

ところでゲーム屋さん、何がどのようにオーケストラ並みなの?
作曲してる人たちやDAC作ってるハード屋さんの仕事は、諭吉に匹敵すると思うんだけど
えーと・・・
234デフォルトの名無しさん:2013/06/23(日) 20:33:16.90
>>230
ツクールレベルならRubyとかスクリプト言語で十分。
だけど将来もしかしたら3Dやるかも、とかだったらやっぱりC/C++のほうがいいね。
あなたにデニスリッチーの加護があらんことを。
235デフォルトの名無しさん:2013/06/23(日) 20:37:09.56
>>232
いや、だからお前文字情報だけのゲーム作って売ってみろって
お前の言ってることが正しければみんな文字情報ゲー買うだろ
今どんな生活してるか知らんけど、普通のリーマンだとしたら生活水準かなり上がるぞ
お前の言ってることが正しければリスクもない
236デフォルトの名無しさん:2013/06/23(日) 20:59:00.58
売れるゲームのはなしなんか誰もしてないぞ
>>226 の皮肉がわからない馬鹿一名を除いて
237デフォルトの名無しさん:2013/06/23(日) 21:09:25.88
>>234
ありがとうございました。
238デフォルトの名無しさん:2013/06/23(日) 21:21:51.52
>>233
ピンキリだけどゲームでも腕のいい作曲家だと年収もオーケストラやってる上手い演奏家と同じくらいだよ。
239デフォルトの名無しさん:2013/06/23(日) 21:55:13.13
そういえば最近のツクールには Rubyのスクリプトがついているんだったな

どうせコピペを繰り返してもなにも身につかないから
基本機能で不自由さを噛み締めるのが良い
240デフォルトの名無しさん:2013/06/23(日) 22:00:38.49
程度が低いぜこのスレは
241デフォルトの名無しさん:2013/06/23(日) 22:07:09.88
ここは入門スレだから
程度の高い話期待するなら、そういうスレに移動
242デフォルトの名無しさん:2013/06/23(日) 22:11:42.81
IDないから好き放題でまとまりがないんだよな
それがム板の残念なとこ
243デフォルトの名無しさん:2013/06/23(日) 22:13:23.16
ID有りのスレから逃げてくるのが多いから仕方がない。
244デフォルトの名無しさん:2013/06/23(日) 22:21:22.41
どこですか、それ
245デフォルトの名無しさん:2013/06/23(日) 22:23:40.31
文字は究極のドット絵
246デフォルトの名無しさん:2013/06/24(月) 07:45:29.55
True Type Font
247 ◆QZaw55cn4c :2013/06/24(月) 08:30:53.83
>>214
えへへ〜、奥村さんの本をみてかきます、めんどくさいから
248デフォルトの名無しさん:2013/06/24(月) 10:29:37.67
えへへ〜、奥さんの○をみてかきます
249デフォルトの名無しさん:2013/06/24(月) 11:14:59.21
アルゴリズムの入門書のクイックソートのCの実装をみていまいち理解できなかったけど
最近haskellのクイックソートのコードをみて、こういうことだったかと腑に落ちたわ。

どの言語ではじめるのがいいですかって質問してる初心者に、Cが基礎だって薦めるやつはウンコだな。
250デフォルトの名無しさん:2013/06/24(月) 11:32:31.32
パラダイムシフトが必要なんだよね、haskell読むのって。
251デフォルトの名無しさん:2013/06/24(月) 12:27:08.17
宗教的理由により生涯ただひとつの言語しか覚えてはいけないという制約があれば
Cから始めるしかない
252デフォルトの名無しさん:2013/06/24(月) 16:56:16.68
唯一の神しか信じてはならない
253デフォルトの名無しさん:2013/06/24(月) 17:22:30.63
>>249
CMMCPで計算モデルを知ると、言語変わっても対応しやすくなる。
254デフォルトの名無しさん:2013/06/24(月) 17:44:34.80
CMMCPって何?
ググっても蚊のサイトしか出ない
255デフォルトの名無しさん:2013/06/24(月) 19:52:16.74
>>254
すまん、CTMCPだ。
(Concepts, Techniques, and Models of Computer Programming)
256デフォルトの名無しさん:2013/06/25(火) 20:21:42.28
質問です。
インクルードガードされたヘッダファイルって2回目は読み込まないんですよね?
でもインクルードしたらどのソースファイルからも宣言した構造体とか使えます。
インクルードで文字列を置き換えてるだけなら、
ヘッダファイルの内容を一箇所でしか使えないと思うんですがどうなっているんでしょうか。
257デフォルトの名無しさん:2013/06/25(火) 20:34:08.74
>>256
IDEとかを使ってて不思議に思うのかも知れないが
CやC++コンパイルってのは基本的に、各.cや.cppに対して行う
.cが2つあれば、コンパイルは2つ走るワケで
「ひとつのコンパイル単位の間で」一度ずつしか読まれないだけよ
258デフォルトの名無しさん:2013/06/25(火) 20:47:01.44
#includeっていうのは指定したヘッダーファイルの内容をその場所にぶちまけてるってだけ
259 ◆QZaw55cn4c :2013/06/25(火) 20:52:01.63
>>256
一つのコンパイル単位において一回だけ、というだけで
複数のコンパイル単位については、必要ならばそれぞれについて一回インクルードされますよ
260デフォルトの名無しさん:2013/06/25(火) 20:58:52.43
>>257-259
いやー凄い勉強になりました
これが納得いかなくてずっと悩んでたもので
試しにヘッダファイルに int x = 10; と入れてみて二箇所から読んでみたらちゃんと再定義のエラーになりました。
一箇所から2回読んだ時は、インクルードガードされるので大丈夫なんですね
ありがとうございました
261 ◆QZaw55cn4c :2013/06/25(火) 21:34:56.45
>>260
こっちからはなにかよくわかっていませんが、持ちネタの「仮定義」tentative defenision のよーな木が

extern は要らない子っ!!!!
262デフォルトの名無しさん:2013/06/25(火) 21:40:53.08
undefしてマクロ再定義し、includeを2度する邪悪なソースを見たことがある
263 ◆QZaw55cn4c :2013/06/25(火) 21:47:01.53
>>262
じゃあ番兵 #define の識別子をきみょーきてれつにするんだ!
264デフォルトの名無しさん:2013/06/25(火) 21:48:53.53
>>263
いやそれヘッダ開いてコピペされるだけだから…#pragma onceとか使うしかないっしょ
265デフォルトの名無しさん:2013/06/25(火) 22:48:00.10
常駐先の人件費抑制に利用されただけの人生だったな残念w
266デフォルトの名無しさん:2013/06/26(水) 00:14:02.45
>>261
そりゃ業務で分割コンパイルも経験した事のないヤツにはexternは不要だろうな
267 ◆QZaw55cn4c :2013/06/26(水) 04:07:29.94
>>266
キーワード extern を1回も使わなくても複数の翻訳単位で系を構成することはできます(棒)
extern は要らない子っ
268デフォルトの名無しさん:2013/06/26(水) 10:55:37.73
>>267
関数のプロトタイプはexternなしでもいいし、変数もグローバル変数使わなければいいしな。
269デフォルトの名無しさん:2013/06/26(水) 10:59:18.24
C言語のスレなんだが
270デフォルトの名無しさん:2013/06/26(水) 11:03:22.03
Cだとextern不可避のことってあるんだっけ。
271デフォルトの名無しさん:2013/06/26(水) 11:07:49.59
http://www.kouno.jp/home/c_faq/c1.html#11

1.11:
関数宣言についたexternは何を意味するのか。

A:
こういう書き方をすることで、関数の定義がたぶん別のソースファイ ルにあるということを、ほのめかすことができる。しかし以下の2つ に違いはない。

extern int f();

int f();

References:
ANSI Sec. 3.1.2.2, Sec. 3.5.1; ISO Sec. 6.1.2.2, Sec. 6.5.1; Rationale Sec. 3.1.2.2; H&S Secs. 4.3,4.3.1 pp. 75- 6.
272デフォルトの名無しさん:2013/06/26(水) 11:16:18.07
>>268>>270
オブジェクト指向ではないC言語はどうしても大域変数が欠かせない場面が多い

>>267は実務をしらないニートの発言
273デフォルトの名無しさん:2013/06/26(水) 11:30:33.05
>>272
手元にあったgitのソースにgrepかけてみたら、変数のexternはerrnoの一個しかなかったわ。
普通に組んでたらいらないんじゃないの。
274273:2013/06/26(水) 11:41:12.99
よくみたらけっこうあったわ > 変数のextern
ごめん。
275デフォルトの名無しさん:2013/06/26(水) 11:44:50.09
オブジェクト指向でないから、大域変数を完全に使わないとすれば、構造体に
変数を持たせてそのポインタを持って回る事になるが、このプログラミングスタイル
は管理が大変な上にエラーの原因になりやすい

externを使った方が遥かに楽な場面が多い
276デフォルトの名無しさん:2013/06/26(水) 12:14:07.85
大域変数宣言する際に、externをつけなくてもいいという話なんじゃないの?
277 ◆QZaw55cn4c :2013/06/26(水) 12:31:20.85
>>268
グローバル変数を使うときでも制約はありますが extern キーワードを使わなくともリンクできます(棒)
278 ◆QZaw55cn4c :2013/06/26(水) 12:32:53.04
>>272
>>277
キーワードを先に示しているのに‥‥
趣味でも英語読むのに実務で英語読まないとかありえるのですか‥‥
279デフォルトの名無しさん:2013/06/26(水) 12:33:09.81
持ちネタはもういいよ
280デフォルトの名無しさん:2013/06/26(水) 12:40:42.95
こういう表記がわかりません

#define H8_3069F_SCI_SMR_CKS_PER1 ( 0<<0 )
#define H8_3069F_SCI_SMR_CKS_PER4 ( 1<<0 )
#define H8_3069F_SCI_SMR_CKS_PER16 ( 2<<0 )
#define H8_3069F_SCI_SMR_CKS_PER32 ( 3<<0 )
281デフォルトの名無しさん:2013/06/26(水) 12:42:52.63
>>276
どれか一つのファイルにはexternは必要だぞ
全部書いてなかったらリンクできない
282デフォルトの名無しさん:2013/06/26(水) 12:44:39.50
http://www.pro.or.jp/~fuji/mybooks/cdiag/cdiag.5.4.html

こういうのは古いけど今でも立派に通用するテクニックだ
283デフォルトの名無しさん:2013/06/26(水) 12:50:46.95
>>277
どうやってリンクするの?
284デフォルトの名無しさん:2013/06/26(水) 12:55:36.54
狂人に構うなよ
時間の無駄だぞ
285デフォルトの名無しさん:2013/06/26(水) 13:03:32.22
「externは必要」というのは間違い。省略した場合はexternが付いているのと同じだから。
「externは不要」というのは間違い。明示的に書くことで外部宣言されていることが分りやすくなるから。
「externは書いた方が親切」これが正解。
286デフォルトの名無しさん:2013/06/26(水) 13:03:35.29
初歩的なミスだけどこういうのにはまる事もあるからなあ

--- a.c

extern int *a;

--- b.c

int a[100];

なぜ動かないか最初は理解出来なかった
287デフォルトの名無しさん:2013/06/26(水) 13:05:02.34
>>285
それ関数の話?
288デフォルトの名無しさん:2013/06/26(水) 13:06:27.26
>>285
ちょっと違うなあ

http://blog.bitmeister.jp/?p=614

>externのついた大域変数は必ずいずれかのモジュールに実体がないとダメで、
>externのつかない大域変数は基本的にexternありと同じだが、いずれのモジュールにも
>実体がなければリンカが実体を作る、という感じになるでしょうか。

リンカに任せるのかよ
バグの温床になりそうだな
289デフォルトの名無しさん:2013/06/26(水) 13:10:52.54
ついでにコメ欄

>fs Says:
>6月 11th, 2011 at 11:00 PM
>このような言語仕様になった(externの省略が許されるよう緩和された)理由は、
>もともとUNIX他のオペレーティングシステムのリンカーがFortran言語を前提に
>作られている現状を追認するためなのではないかと思います。Fortranは
>上記の「初期値式を持つ定義」は許されない代わりに、extern宣言は不要ですから。

「extern不要!」と言ってるやつはロートルじゃねーの
俺はexternを省略するな、と教わった口だからな
290デフォルトの名無しさん:2013/06/26(水) 13:35:54.07
C言語自体が化石言語……
291デフォルトの名無しさん:2013/06/26(水) 13:39:45.88
化石言語が未だに大学で教えられている件について
292285:2013/06/26(水) 14:08:30.53
関数の話かと勘違いしちゃった…
293285:2013/06/26(水) 14:33:07.27
仮定義っていうのか。勉強になったわ。

仮定義
初期化子を指定しない定義を仮定義という。同じ変数の仮定義は、1つの翻訳単位に複数存在しても構わない。
定義と同様、実体は確保される。仮定義が一つの翻訳単位に複数存在した場合、コンパイラはそれらを1つにまとめ、
0の初期化子を持ったものとして定義する。ただし、全翻訳単位において既に定義が存在すれば、extern宣言された
ものとして振る舞う。この挙動は紛らわしい為、特に必要でない限り仮定義を用いるのは避けた方が無難である。

int n;

尚、同じ仮定義が複数の翻訳単位に存在する場合の、リンク時の動作は規格化されていない。
故に、この場合の動作は未定義である。gccではこの場合、コンパイラが解決している模様。
また、定義と仮定義が同時に存在する場合もコンパイラが解決している模様(言うまでもなく、
定義は2つ以上存在してはならない)。

http://d.hatena.ne.jp/XuHuang/20070624/1182669569
294デフォルトの名無しさん:2013/06/26(水) 14:34:11.67
つまりQZは

>この挙動は紛らわしい為、特に必要でない限り仮定義を用いるのは避けた方が無難である。

これを正当化してるわけか
糞だな
295デフォルトの名無しさん:2013/06/26(水) 14:56:31.49
>>293
externなしでも勝手に変数をまとめちゃうような変態機能とかあんのか。
296デフォルトの名無しさん:2013/06/26(水) 15:13:13.96
>>295
老害しか使わない馬鹿機能だから知らなくていい
297デフォルトの名無しさん:2013/06/26(水) 15:26:03.63
プロなら知ってないとまずい。
298デフォルトの名無しさん:2013/06/26(水) 15:39:46.15
プロ?ニートのどこがプロなの?
299デフォルトの名無しさん:2013/06/26(水) 15:53:25.72
うるさいゴミ
300デフォルトの名無しさん:2013/06/26(水) 16:10:39.97
とニートが発狂しております
301デフォルトの名無しさん:2013/06/26(水) 19:06:50.74
客先常駐で偉そうな客先社員に見下されて何の経験にもならない雑用を押し付けられて精神病むのがオチw
30代で常駐先がなくなって未経験の異業種で人生やり直すのがオチw
常駐先企業の人件費抑制に利用されただけの人生だったな残念w

システムエンジニアになろう〜新入社員研修編〜
ttp://www.nicovideo.jp/watch/sm4010880
302デフォルトの名無しさん:2013/06/26(水) 19:12:44.20
無知を正当化してどうする
知ってることと実装で使っちゃうことはまったく別の話だろ
303デフォルトの名無しさん:2013/06/26(水) 19:31:39.63
ここを読んで、ひとつ知恵がついて、客先で赤っ恥をかかないで済む
それだけでも良いんじゃない?
304デフォルトの名無しさん:2013/06/26(水) 19:54:14.25
>>302
もう無知ではない
だが使うのは奨励されない
305デフォルトの名無しさん:2013/06/26(水) 20:43:40.94
externとか不要だろ
全部引数で渡せよ
306デフォルトの名無しさん:2013/06/26(水) 20:47:37.52
>>305
それでももちろんいいが、OOP言語じゃないと見通しが著しく悪くなるし、
アクセス制御も出来ないっしょ?

C言語では必要悪
307デフォルトの名無しさん:2013/06/26(水) 20:55:28.54
定数を指すマクロも極力引数渡しするのかな…

コンパイル時ではなく起動時に確定した後、変わることはない値とか
準マクロ的に使いたくなる
308デフォルトの名無しさん:2013/06/26(水) 20:59:27.49
普通に構造体でなんとかなる
309デフォルトの名無しさん:2013/06/26(水) 21:00:07.61
組み込みやドライバなら許す
310デフォルトの名無しさん:2013/06/26(水) 21:11:49.11
>>293
規格書にもポータブルでないと明記されている。
企画書の何処に書かれているか分からないゴミクズが炎上学習企んでるだけ WWWW
311デフォルトの名無しさん:2013/06/26(水) 21:21:12.93
>>308
だからアクセス制御ないからバグが入るって

>>310
やっぱりか
クズはクズだなあ
312デフォルトの名無しさん:2013/06/26(水) 21:22:46.79
>>311
アクセス制御とか言い出したら
グローバル変数なんて完全に開けっぴろげだろw

それに構造体も隠蔽可能だぞ
ヘッダには宣言だけ書いて
全部関数を通じて操作させればいいだけ
生成は動的になるけど
313デフォルトの名無しさん:2013/06/26(水) 21:25:38.32
FILEの中身知ってる奴いんのか
Cで隠蔽とか普通に可能
314 ◆QZaw55cn4c :2013/06/26(水) 21:45:11.87
>>281
それができるのです(棒)
315 ◆QZaw55cn4c :2013/06/26(水) 21:46:11.61
>>283
初期化せずに宣言だけする形をとれば extern なんかつける必要はありません(棒)
316 ◆QZaw55cn4c :2013/06/26(水) 21:48:33.57
>>289
MASM5->MASM6 では EXTERNDEF なるディレクティブが新設されたくらい当たり前に新しい考え方

>俺はexternを省略するな、と教わった口だからな
本質を理解しないと新しいことに対応できなくなりますよね
317 ◆QZaw55cn4c :2013/06/26(水) 21:49:18.00
>>290-291
化石言語とやらでいまだにOSが書かれている件について
318 ◆QZaw55cn4c :2013/06/26(水) 21:49:39.68
>>295
リンカがね
319デフォルトの名無しさん:2013/06/26(水) 21:50:43.65
>>310
>規格書にもポータブルでないと明記されている。
でそれはどこ?具体的に引用できないようでは馬鹿が喚いているのとかわらないよね
320デフォルトの名無しさん:2013/06/26(水) 21:51:19.31
おっあぼーんが連続してるんだが
321 ◆QZaw55cn4c :2013/06/26(水) 22:05:58.49
>>293
>gccではこの場合、コンパイラが解決している模様。
コンパイラがリンクするわけがない。リンカがリンクするんだ。それを書いた奴は誰?URL をさらしてくれないか?
表からみえる gcc はコンパイラドライバであってコンパイラではない

>定義と仮定義が同時に存在する場合もコンパイラが解決している模様(言うまでもなく、定義は2つ以上存在してはならない)。
定義という言葉自体が曖昧。この問題を正確に記述するのであれば、「初期化を伴う定義」と「宣言」または「仮定義」の二つのみを使うべき
初期化を伴う定義はリンクするオブジェクトのすべてにおいて二箇所以上に存在してはならない、それだけの話だ
322 ◆QZaw55cn4c :2013/06/26(水) 22:08:41.51
>>282
残念ながらCならばそんなことをする必要はないMASM6だって必要なかったくらいだからねその著者もあやしいものだね
323デフォルトの名無しさん:2013/06/26(水) 22:09:56.74
オブジェクトファイルを作成する時に
inline 関数などリンク時に同一にまとめられる識別子は
「複数定義を同一にまとめる」という属性を付けるけど
それの話か?
324 ◆QZaw55cn4c :2013/06/26(水) 22:10:33.44
>>310
リンカやオブジェクトファイルの仕様がCの言語仕様書に明記されるのか?かなり疑問だ
325 ◆QZaw55cn4c :2013/06/26(水) 22:12:08.85
>>279
まだまだこのネタいけるね
326デフォルトの名無しさん:2013/06/26(水) 22:18:23.06
突然回答者のレベル下がったな
327デフォルトの名無しさん:2013/06/26(水) 22:24:02.59
要するに環境依存って事だろ
スレ違いだ
328デフォルトの名無しさん:2013/06/26(水) 22:26:22.51
>>327
環境依存というわりには「適用できない環境」なるものを具体的に列挙できない件について
329デフォルトの名無しさん:2013/06/26(水) 22:33:06.23
列挙して欲しいならそう聞けよ初心者さんよ
態度でかくね?
330デフォルトの名無しさん:2013/06/26(水) 22:39:05.27
関数と同様にリンカが未定義エラーにするのが良い感じするんだけどね
331デフォルトの名無しさん:2013/06/26(水) 22:44:24.80
日本のIT企業は人材派遣会社でしかない
昔からある日本の大企業の社員の雇用を守る為にIT技術者が人件費抑制のために使い捨てにされていってるだけw
332デフォルトの名無しさん:2013/06/26(水) 23:49:57.82
>>324
お前が知らないだけ。WWWW
アマゾンギフト10万円で教えてやるよ。
333デフォルトの名無しさん:2013/06/27(木) 03:14:35.49
>>329
列挙してくださいお願いいたします
334デフォルトの名無しさん:2013/06/27(木) 09:37:43.79
>>315
もう他の人が書いてるからあんたはいいよ。
335デフォルトの名無しさん:2013/06/27(木) 10:54:04.07
そう?今でもここまで盛況になるのならネタとして活きがいいと思うけど
また来年くらいにやってみよー
336デフォルトの名無しさん:2013/06/27(木) 12:12:21.23
バカな奴って物事の優先順位をちゃんとつけられないから、
くだらないところに拘って時間を無駄にするよな
337デフォルトの名無しさん:2013/06/27(木) 13:08:41.59
>>335 >>336
こういう話の流れがわかない書き込みってなんなんだろう。
いろいろ考えて自分の頭の中ではなんかストーリーがあるんだろうけど、エスパーじゃないからわからない。
338デフォルトの名無しさん:2013/06/27(木) 13:10:22.92
>>337
ごくろう
話は終わったんだよ
339デフォルトの名無しさん:2013/06/27(木) 13:11:15.13
エスパーだけど分かんないよ
340デフォルトの名無しさん:2013/06/27(木) 13:17:22.61
>>335 は上で盛り上がったexternのネタを来年にまたここで振って盛り上がるとうれしいって暇なレス乞食だろ。
>>336 はエスパーだけどわからん。
341エスパー:2013/06/27(木) 13:45:55.47
ガッ
342デフォルトの名無しさん:2013/06/27(木) 21:55:43.73
extern = public
static = private
343デフォルトの名無しさん:2013/06/27(木) 22:25:42.00
extern int array[10000];
こういう定義がふくまれるヘッダーファイル

arrayを使っている(定義している)モジュールをリンクしなければarrayの領域は確保されないが、
int array[10000];
では、使う使わないに関わらず領域が確保されてしまう。

要約するとQzはうんこ
344デフォルトの名無しさん:2013/06/27(木) 22:27:38.84
署名わすれたわ WWWW

要約するとQzはうんこ WWWW
345デフォルトの名無しさん:2013/06/27(木) 22:29:37.45
これはでかいつりばりだ
346デフォルトの名無しさん:2013/06/27(木) 23:35:43.97
はーいQzちゃん
いつものお客さんがご指名よ
347デフォルトの名無しさん:2013/06/28(金) 19:11:21.34
>>342
externって実体じゃないから、違うんじゃね
348デフォルトの名無しさん:2013/06/29(土) 00:08:36.30
>>345
全然かからないのは、やはりでかいからか?
349デフォルトの名無しさん:2013/06/29(土) 09:56:01.76
ポインタの指す領域が解放(free)されているかどうかを調べる方法ってありますか?
今回は具体的にはsqlite3_closeを実行するとsqlite3_freeが
呼ばれているのかどうかを知りたいだけなのでドキュメントを見れば解決しそうなのですが、
普遍的にこういういのをプログラム上から調べる方法があったら教えてください。
350デフォルトの名無しさん:2013/06/29(土) 10:00:09.50
>>349
> 普遍的に

ない。
以上。
351デフォルトの名無しさん:2013/06/29(土) 10:11:15.42
>>349
ない
必要なら自分でアロケータを書くしかない
352デフォルトの名無しさん:2013/06/29(土) 11:54:53.53
ポインタにNULLを入れて何回でもfreeすればいいだけ
353デフォルトの名無しさん:2013/06/29(土) 12:00:32.81
ポインタの指す領域が解放(free)されているかどうかを調べる方法ってありますか?
今回は具体的にはsqlite3_closeを実行するとsqlite3_freeが
呼ばれているのかどうかを知りたいだけなのでドキュメントを見れば解決しそうなのですが、
普遍的にこういういのをプログラム上から調べる方法があったら教えてください。
354デフォルトの名無しさん:2013/06/29(土) 12:09:23.93
10万回くらい試行して、メモリリークするか見る。
355デフォルトの名無しさん:2013/06/29(土) 12:12:49.27
#define FREE(p) { if(p!=NULL) free(p); p = NULL; }
freeを全部上に置き換えてpがNULLだったらfree済みだし何回でもfreeすればいい
356デフォルトの名無しさん:2013/06/29(土) 12:50:15.90
>>355
それはFREEされたかどうか、NULLが入ってるかどうかを調べるということであって、
freeされたかどうかを知る手段ではない。
質問の意図が分からないゴミはカキコするな。
357デフォルトの名無しさん:2013/06/29(土) 12:57:48.43
必殺のxalloc()(笑)でも使うか?
358デフォルトの名無しさん:2013/06/29(土) 13:22:22.73
freeした領域に、書き込めばいいんじゃね
そのうち、例外が発生してくれる
359デフォルトの名無しさん:2013/06/29(土) 13:24:00.87
実装依存
メモリプールだったらアウト
360デフォルトの名無しさん:2013/06/29(土) 13:42:36.64
通常の free の話だけじゃなくて
sqlite3_close 内で sqlite3_free が呼ばれるかまで含んだ話だから
free をマクロで置き換えるとかじゃどうしようもない
sqlite3_close の実装が変更できる状況であればソースがあるわけで、
sqlite3_free を呼んでるかはソース読めば分かるわけだし、
最悪分からなくてもログ仕込めばいい

実装を変更できない状況でどうするかとなると、
free や sqlite3_free などの後に実行するとエラーになる処理や
free や sqlite3_free などによるメモリ上の何らかの変化の存在が分かれば、それで判別できる

あとはリバースエンジニアリング、
あるいはライブラリファイル内の free や sqlite3_free などのコードを
ログ出すだけの処理に改竄するとか
361デフォルトの名無しさん:2013/06/29(土) 13:52:38.56
そういう話なら、sqlite3のソースコード見るか、
デバッグシンボルつけてビルドして、ステップ実行すればいいだけじゃん
362 ◆QZaw55cn4c :2013/06/29(土) 14:17:52.67
>>353
評価版の最新 bcc32 をインストールすればオプション -v -vG でメモリーリークが調べられますよ
363デフォルトの名無しさん:2013/06/29(土) 15:28:34.86
>>357
けっこー便利なんだけど

まあ自前でアロケータを書くのも経験として悪くないとおもいます >>349
364デフォルトの名無しさん:2013/06/29(土) 15:37:23.99
Boehm GCを使えばコンパイラ依存なしでメモリリーク検査出来るようだ
365デフォルトの名無しさん:2013/06/29(土) 17:24:57.69
>>355
ロジックに関係なく機械的にポインタにNULL入れるテクニックを薦める人が多いけど
それ以前に、変数のスコープを小さくするとか、使いまわしはやらないとか、お作法的な
部分を守るようにしたほうがいいな。
366デフォルトの名無しさん:2013/06/29(土) 17:32:14.26
アホ質問者にアホ回答者が群がってるな。

sqlite3には自前のメモリ管理ルーチンを使うように設定するAPIが有るから、
_close中で_freeが呼ばれている事は容易にわかるが、
そもそも_freeに渡して良いポインタはユーザプログラムには渡されないので調べるべきポインタなどない。
367デフォルトの名無しさん:2013/06/29(土) 17:33:40.42
そんなのは当たり前
メモリ破壊が一番頭を悩ます言語なんだから
考えられる対策は全て施すべき
368デフォルトの名無しさん:2013/06/29(土) 17:39:57.73
>>365
会社によっては関数の最初に変数を全部定義するのがマナーだよ
作法なんて文化が変われば通用しないから機会的に処理できる方法が優れてる
369デフォルトの名無しさん:2013/06/29(土) 17:54:34.44
>>368
Cならそれが普通だと思うけど。
関数の途中で宣言しようと思ってもブロックの先頭でしかできないし。
370デフォルトの名無しさん:2013/06/29(土) 17:58:48.80
・・・ということは、ターゲットが少なくともアレとアレではないってことか
371デフォルトの名無しさん:2013/06/29(土) 17:58:58.41
>>368
まあ、30年くらい前のCOBOLのお作法でJavaのコードを書いてるような会社とか知ってるし、
そういう文化の会社で普通のJavaらしいコードを書いたら逆にヘタクソって言われるのも分かるけど、
まあ一般論でいいコードと悪いコードってあるでしょ。
372デフォルトの名無しさん:2013/06/29(土) 18:02:58.79
>>369
関数の先頭以外での定義を禁止している老害が居るって事だろ。
都市伝説じゃなくて、実在するのか?
373デフォルトの名無しさん:2013/06/29(土) 18:05:38.01
>>369
C99なら出来るぞ
gcc使えば自然とC99の書き方にならないか?
374デフォルトの名無しさん:2013/06/29(土) 18:06:17.74
>>372
C89はブロックの先頭以外で宣言できないけど、都市伝説って言われるくらい世の中C99ばっかりなのかね。
375デフォルトの名無しさん:2013/06/29(土) 18:08:27.15
VS2012ですらC89だからな
376デフォルトの名無しさん:2013/06/29(土) 18:22:28.20
>>374
読解力が欠如してるな。底辺コーダーはそれでもつとまるのか?

禁止しているコーティング規約が存在するという都市伝説
377デフォルトの名無しさん:2013/06/29(土) 18:23:44.40
>>375
マジかw 使ったことないから知らんかったわ。いまだにC89最強か。
378デフォルトの名無しさん:2013/06/29(土) 18:24:45.82
しかも、必ず、0やNULLで初期化してたりな
379デフォルトの名無しさん:2013/06/29(土) 18:25:50.48
VSのそれは、C++でC99を補完できるからってことらしいがな
380デフォルトの名無しさん:2013/06/29(土) 18:27:45.76
まあC99はいらない子だったからな
381デフォルトの名無しさん:2013/06/29(土) 18:29:42.41
型推論できないならどこで宣言したって一緒
382デフォルトの名無しさん:2013/06/29(土) 18:32:49.66
>>376
読解力ないし無闇に煽るし、すごいザコっぽいな。
「ブロックの先頭以外では」っていうのはブロックの先頭なら関数の途中でも宣言できるって意味だよ。
383デフォルトの名無しさん:2013/06/29(土) 18:35:35.44
こういう話はC89とC99とC++の仕様の区別がついてないくせに、ドヤ顔で煽ったりするやつが
まじってくるから紛糾するんだと思うわ。
384デフォルトの名無しさん:2013/06/29(土) 18:39:58.60
>>378
Cで変数は全部宣言と同時に0やNULLで初期化するってルールも見たことあるな。
で char[] なんかはmemset()で0埋め。

これも未初期化の変数を参照したら警告を出すコンパイラの機能をつぶすダメルールだな。
385デフォルトの名無しさん:2013/06/29(土) 18:45:12.31
>未初期化の変数を参照したら警告を出す
そんなのあてにしてる奴がおるんか
386デフォルトの名無しさん:2013/06/29(土) 18:48:09.59
警告出るからウザイと言う話だろ。
あてにしてるかどうかとは別の話。
387デフォルトの名無しさん:2013/06/29(土) 18:49:24.07
>>382
「関数の先頭以外での定義を禁止してる老害」を都市伝説と言ったわけだが。
「ブロックの先頭以外」とか誤読した池沼でも煽られると怒るのか?
その怒りは可哀想な頭に産んだお前の親に向けろ。
388デフォルトの名無しさん:2013/06/29(土) 18:51:36.94
>>384
不定な状態の変数を減らすと言うのは一定の効果があると思うよ。

100回やったら 100回ともに変な答えが出るならテストで検出も容易だけど、
100回やったら 1回だけ変な答えが出るバグはテストをすり抜けることがある。
389デフォルトの名無しさん:2013/06/29(土) 18:53:09.12
>>385
人間の注意力に頼るよりツールに警告を出させたほうが安全だわ。
390デフォルトの名無しさん:2013/06/29(土) 18:58:33.46
0を入れることで正しい値にされなければならない変数が
0になっているというケースは考えられる。
この手の議論はケースバイケースだから立場によっては
見解が大幅に変わってくる。
391デフォルトの名無しさん:2013/06/29(土) 18:58:49.36
if(条件式1)
if(条件式2)
if(条件式3)
else



if(条件式1)
else if(条件式2)
else if(条件式3)
else

で挙動が違うことってありますか?
392デフォルトの名無しさん:2013/06/29(土) 19:00:14.13
>>388
逆にバグってるのに、一見ふつうに動いているように見えてバグ発見を遅らせる効果もあると思うわ。

っていうか、防御的プログラミングと称して、バグっても動くような工夫をいい習慣と思ってる人多いね。
393デフォルトの名無しさん:2013/06/29(土) 19:00:24.32
>>391
その時点ですでに挙動が違う。
394デフォルトの名無しさん:2013/06/29(土) 19:01:33.56
>>391
下は各処理が排他的に実行されるけど上はそうでない。
395デフォルトの名無しさん:2013/06/29(土) 19:03:31.54
>>392
SEGVはバクだけどそれ以外なら仕様ですから。
396デフォルトの名無しさん:2013/06/29(土) 19:08:03.08
>>387
見当違いの論点で煽りだして、それが勘違いだと指摘されても最初に高飛車に煽りだしたのは
自分だから議論を引っ込められなくて勘違いを押し通そうとしてるのかな。

だれでも勘違いはあるから、やっぱ無闇に人を煽るのはよくないないね。
397デフォルトの名無しさん:2013/06/29(土) 19:15:15.85
趣味じゃねえから、仕事だから
バグもなく完璧に仕上がりましたがベストだけど、
バグって納期に間に合いませんでしたより、
潜在バグはありますがとりあえず正常動作しますのがマシ
398デフォルトの名無しさん:2013/06/29(土) 19:15:53.53
>>396
バカがまだわからんのか。

>>368
> 会社によっては関数の最初に変数を全部定義するのがマナーだよ

に対して
>>369
>Cならそれが普通だと思うけど。
とマヌケ過ぎる突っ込み入れたお前の読解力が残念過ぎる
399デフォルトの名無しさん:2013/06/29(土) 19:30:00.58
>>393
>>394
ありがとうございます。
すいません、言葉足らずでした。
条件1,2,3はそれだけで排他的であるという状況のもとでのことです。
400デフォルトの名無しさん:2013/06/29(土) 19:45:57.71
>>392
それをうまく利用して初心者に潜在的なバグを仕込ませてるのが皆さんご存知の片山
401デフォルトの名無しさん:2013/06/29(土) 20:01:30.17
>>399
情報の後出しか、荒らしだな
さっさと消えろ

荒らしでないなら足りないのは言葉ではなくお前の頭
プログラミング以前の問題だからさっさと消えろ
402デフォルトの名無しさん:2013/06/29(土) 20:09:41.19
>>401
俺はお前の方が荒らしだと思う。
403デフォルトの名無しさん:2013/06/29(土) 20:19:14.66
>>391
先ず、自分で試してみて
その上で、こうなるはずと思ったことと、結果が違うかどうかを確かめて
そのくらいはしておいたほうが良いと思った。
404デフォルトの名無しさん:2013/06/29(土) 20:20:17.74
ポインタやら構造体やらが理解できずC言語をギブアップしたものですが、
Rubyでオブジェクト指向やクラスとインスタンスの関係を理解したら
構造体型とやらの概念やメリットも理解できるようになりました
構造体型変数の宣言というのは、要はオブジェクト指向言語で
クラスのインスタンスを生成してるようなものだったんですね
405デフォルトの名無しさん:2013/06/29(土) 20:23:02.48
>>391
{} 付けてみ

if(条件式1)
if(条件式2)
if(条件式3)
else

if(条件式1){
if(条件式2){
if(条件式3){
else{}
}}}

if(条件式1)
else if(条件式2)
else if(条件式3)
else

if(条件式1){}
else if(条件式2){}
else if(条件式3){}
else{}
406デフォルトの名無しさん:2013/06/29(土) 20:32:44.51
>>404
まあそうだね、ただスタックに生成するのとヒープに生成するのとは区別するのがC/C++
407デフォルトの名無しさん:2013/06/29(土) 21:13:06.64
>>398
いや、すごいまともなツッコミだわ。
408デフォルトの名無しさん:2013/06/29(土) 22:50:57.07
http://www.k-cube.co.jp/wakaba/server/format.html

scanf用の入力フォーマット指定子の中に、
unsigned charの場合が載っていません。

どのように指定したらいいですか?
409 忍法帖【Lv=14,xxxPT】(1+0:5) :2013/06/29(土) 23:05:13.62
テスト
410デフォルトの名無しさん:2013/06/29(土) 23:55:19.01
>>399
早く消えろ
二度と来るなキチガイ
411デフォルトの名無しさん:2013/06/29(土) 23:59:58.82
>>408
unsigned charでも%cやら%sをつかっておけばいいんじゃないの?
charがsignedかunsignedかは環境によって違うし。
412デフォルトの名無しさん:2013/06/30(日) 00:00:54.30
>>410
お前がキチガイだろ
413デフォルトの名無しさん:2013/06/30(日) 00:09:36.33
>>412
よう基地害。
お前自覚ないの?
414デフォルトの名無しさん:2013/06/30(日) 00:11:54.69
戯れんなよ
415デフォルトの名無しさん:2013/06/30(日) 00:32:01.94
>>413
よおキチガイ
416デフォルトの名無しさん:2013/06/30(日) 01:09:09.99
>>408
そのクソページに書かれてないだけで、正式な規格書には書かれている。
初心者はまともな書籍で学ぶべき
417デフォルトの名無しさん:2013/06/30(日) 01:09:16.38
お前ら仲良しだな
418デフォルトの名無しさん:2013/06/30(日) 01:25:14.60
頭にクソとつけるだけで勝った気になれる安っぽい精神
うらやましいです。
419デフォルトの名無しさん:2013/06/30(日) 01:28:49.15
>>416の自尊心がほとんどない証拠
420デフォルトの名無しさん:2013/06/30(日) 05:32:06.68
421デフォルトの名無しさん:2013/06/30(日) 06:45:28.80
>>416
だよな
何でもタダでやろうとする乞食根性丸出しの初心者は消えればいいのに
422デフォルトの名無しさん:2013/06/30(日) 07:45:43.51
>>418-419
煽って回答を得ようとするクソ質問者
この板にはその手法を常用するクソコテが粘着してるので通用しない。
423 ◆QZaw55cn4c :2013/06/30(日) 08:22:38.61
>>416 >>421
本当か?
手元のISO/IEC9899:1999 7.19.6.2.12 には書式指定子に %c のunsigned charの場合なるものは存在しないが?

頭沸いていないか?それとも自治スレで完敗したのでまた荒しに来たのか?
424 ◆QZaw55cn4c :2013/06/30(日) 08:23:43.53
>>422
巣ではお前の回答を今か今かと待っているぞ?はやく巣に戻れ
425デフォルトの名無しさん:2013/06/30(日) 08:40:02.39
>>423
自治スレ? そんなクソスレ知らねーな

おそらくお前が持ってるのは違法アップロードされた偽物なんだろ。
正規版にはunsigned charへの変換指定が書いてある
426デフォルトの名無しさん:2013/06/30(日) 09:11:11.21
何だと?Qは違法な規格票を使用しているのか
これはホットラインセンターに通報した方がいいって事?
427デフォルトの名無しさん:2013/06/30(日) 09:22:16.90
Qzは偽規格書を根拠にextern不要とかほざいてたのか。WWWW
本物にはポータブルじゃないと明記されてるのに。
偽規格書 ワロタ WWWW
428デフォルトの名無しさん:2013/06/30(日) 10:31:49.60
gcc では、enum変数に数値代入しても、コンパイル時に警告が出ないんですか?
なんか出ないんですが。
429デフォルトの名無しさん:2013/06/30(日) 10:33:58.43
typedef
430408:2013/06/30(日) 10:41:30.39
wcstoulで対応できました。
ありがとうございました。
431428:2013/06/30(日) 10:49:26.64
>>429
typedefしても警告が出ませんでした。

gcc-4.7.2
>gcc -Wall test.c
>else: 100

typedef enum {
 FALSE = 0, TRUE = 1,
} BOOLEAN;

int main(void) {
 BOOLEAN flag;
 flag = 100;

 if (flag == TRUE) {
  printf("true: %d", flag);
 else if (flag == FALSE) {
  printf("false: %d", flag);
 } else {
  printf("else: %d", flag);
 }
 return 0;
}
432デフォルトの名無しさん:2013/06/30(日) 10:54:30.23
もしかして、この話と勘違いしてね?
int main(void)
{
enum { x };
x = 1;
return 0;
}
433デフォルトの名無しさん:2013/06/30(日) 10:54:42.38
数値で代入したくなるような変数の型がenumってのがすでにおかしいんじゃね?
434デフォルトの名無しさん:2013/06/30(日) 11:08:06.93
>>428
enumはchar, signed integer型又はunsigned integer型と互換って正規版の規格書には書いてある。
偽規格書になんて書いてあるかは知らない WWWW
435デフォルトの名無しさん:2013/06/30(日) 11:15:35.67
>>432
定数への代入ではなくて、やっぱりenum変数への数値代入です。
>>433-434
え?互換なんですか?!と思って、sizeofしてみたら4バイトありました。ありがとうございました。

typedef enum TAG_BOOLEAN { FALSE = 0, TRUE = 1 } BOOLEAN;
int main(void) {
 BOOLEAN flag = 10;
 printf("flag:%d sizeof(%d)", flag, sizeof(flag));
 return 0;
}

>flag:10 sizeof(4)
436デフォルトの名無しさん:2013/06/30(日) 22:09:44.39
>>349, >>353です。
レス代行をお願いしているため、レスが遅くなってすみません。
普遍的な方法は無く、個々にソースを当たるしかないと言うのを理解しました。
ありがとうございます。
437 ◆QZaw55cn4c :2013/06/30(日) 23:07:57.24
>>425
まっ正確にはTC2なんだけどね.
でも,

>正規版にはunsigned charへの変換指定が書いてある
真っ赤な嘘ですねえ,だって,JIS 検索 http://www.jisc.go.jp/app/pager?id=1267490 で JIS X3010 7.19.6.2 を検索しても unsigned char 用の書式指定子なんて見つかんないですからね
お前さんは scanf() 系のどの書式指定子を unsigned char 用だと思ったの?

>>427
ISO/IEC 9899:1999 6.2.2.5
If the declaration of an identifier for an object has file scope and no storage-class specifier,
its linkage is external.
変数でファイルスコープで extern が書いてなかったら,それは外部リンケージ扱いだよ,ってかいてあるしね.それと ISO/IEC 9899:1999 6.9.2.2 を合わせて考えると extern なんて要らない子なんじゃないかな‥‥
少なくともリンカ次第で C の言語仕様書に書かれる話じゃないし.あと,あくまで C の話ね,C++ じゃないよ.

>>426
そんなもんが pdf でほいほい転がってるの?

>>427
>本物にはポータブルじゃないと明記されてるのに。
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?

引用する際にはちゃんと引用元を明記しないと,著作権法第48条の3 に違反し,同法122条によれば50万以下の罰金だそう,あと同法123条により親告罪じゃないから,場合によっては起訴されるかもしれないよ.
438デフォルトの名無しさん:2013/06/30(日) 23:12:52.26
>>437
全部まとめてアマゾンギフト10万円で教えてやるよ。 WWWW
439 ◆QZaw55cn4c :2013/06/30(日) 23:17:59.46
>>438
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?
440デフォルトの名無しさん:2013/06/30(日) 23:29:12.03
>>439
全部まとめてアマゾンギフト10万円で教えてやるよ。 WWWW
騙し取られるのが心配なら、詐欺った場合は刑事事件で告訴すりゃ良いだろ。WWWW
441 ◆QZaw55cn4c :2013/06/30(日) 23:53:53.12
>>440
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?
442デフォルトの名無しさん:2013/07/01(月) 00:02:35.76
>>441
全部まとめてアマゾンギフト10万円で教えてやるよ。 WWWW
騙し取られるのが心配なら、詐欺った場合は刑事事件で告訴すりゃ良いだろ。WWWW
443 ◆QZaw55cn4c :2013/07/01(月) 00:32:58.43
>>442
該当箇所を引用してみてよ.それで当否を客観的に判断できるでしょ,JIS X3010 でもいいからさー,それとも引用できないほど自信が無いの?

あと
>騙し取られるのが心配なら、詐欺った場合は刑事事件で告訴すりゃ良いだろ。
意味不明。大丈夫?豆腐の角にぶつけてみるといいよ
444デフォルトの名無しさん:2013/07/01(月) 00:38:03.36
>>443
自信があるから教授料を要求してるわけだ。WWWW
教授料の支払いを約束するなら、先に>>416を教えてやってもいいぞ。 WWWW
445デフォルトの名無しさん:2013/07/01(月) 00:41:25.29
おっと、その前に教えた事が理解出来るかテストだ
>>343に反論してみろ WWWW
446デフォルトの名無しさん:2013/07/01(月) 01:34:26.25
某スレを潰した荒らしに瓜二つだ
447 ◆QZaw55cn4c :2013/07/01(月) 07:01:51.45
>>343
ごめんね: keyword:Qzでアボーンしていたので見てなかった
ふむ、ひとつの makefile で複数のバイナリ(サーバープログラムとクライアントプログラム、とか)を生成するとき、
特定のバイナリは、くだんのヘッダは読むけれどもそのヘッダにimplyされている全機能や array[] を使うとは限らない、ということはありうるわね

でも手元の gcc では、使わなければ int array[10000] であっても増えないね
ideone ではこうだった
http://ideone.com/Digq4t
http://ideone.com/aYFG9w

>int array[10000];
>では、使う使わないに関わらず領域が確保されてしまう。
処理系依存じゃないの?
処理系依存にうるさい人が処理系依存の事例を挙げるなんてダブルスタンダードもいいとこだね

>>445
回答しといたよ
これは授業料なしで引用していただける資格があると思うよ
448デフォルトの名無しさん:2013/07/01(月) 07:08:11.62
定義のみで使われない変数や関数はコンパイル時に削除されるんでわ?
449 ◆QZaw55cn4c :2013/07/01(月) 07:08:54.57
おっとシェアードライブラリの可能性を忘れてたね
450 ◆QZaw55cn4c :2013/07/01(月) 07:26:20.18
>>448
手元の cygwin では、-static を付けても dll まではリンクしてくれないから、例示としては不徹底だけれども http://codepad.org/DUJxHDoV
>定義のみで使われない変数や関数はコンパイル時に削除される
そういう賢い処理系もあるようだね。シェアードライブラリのヘッダだったらその中の int array[] とかはどうなるの?

>>445
回答しといたよ
これは授業料なしで引用していただける資格があると思うよ
451 ◆QZaw55cn4c :2013/07/01(月) 08:03:56.34
>>450
おっと肝心なところがぬけてたねhttp://codepad.org/wHHXCR5m
なんだか我ながら連投連投で必死だね
こんだけ必死なんだから情けを恵んでやってもいいんじゃないかな >>445
452デフォルトの名無しさん:2013/07/01(月) 08:25:11.18
>>447
落第。先に教授料10万円はらいな。 WWWW
ideone.com/P9UkTE
ideone.com/TJH0fO
しかし、lsでプログラムのサイズ調べて、ドヤ顔するとは大笑い海水浴場だ。朝から腹痛てー WWWW
渾身の自爆ギャグに免じてこのレス自身は無料レクチャーにしてやるよ。 WWWW

>>448
アホは引っ込んで炉。仮定義オブジェクトの話してるんだから、コンパイラが削除するわけねーだろ。
リンカーなら出来なくはないが、参照され無くても存在する事に意味があるオブジェクトもあるので、
そういう機能が有ったとしてもオプショナルだ。

>>450-451
お前バカなんだから、朝から無駄なエネルギー消費すんな。 WWWW
453 ◆QZaw55cn4c :2013/07/01(月) 08:36:02.78
>>452
>lsでプログラムのサイズ調べて、ドヤ顔するとは大笑い海水浴場だ
たしかに未初期化領域は BSS 領域に展開されるので実行ファイルのサイズをみてどうこうというというのはギャグだねえ
やっぱり >>343 は認めなくちゃいけないね

>お前バカなんだから、朝から無駄なエネルギー消費すんな。
ほんとだねえ、今日一日は交通事故に注意しよう‥‥‥
454デフォルトの名無しさん:2013/07/01(月) 08:40:05.18
>>452
うんそうだね、仮定義をコンパイラが削除するわけねーな
その続きがイミフだけど、仮定義って何だかご存知?
455デフォルトの名無しさん:2013/07/01(月) 08:48:36.32
>>453
それじゃ、教授料10万円相当は先払い。
後払い権得られるチャンスだったのに残念だったな。 WWWW

>>454
仮定義オブジェクトをコンパイラが削除するとか言い出す初心者にはわからなくても無理はない。WWWW
レクチャーしてやろうか?有料で WWWW
456454:2013/07/01(月) 09:04:22.87
>>455
キョージュさん、俺の言ったことよく読んでね
457デフォルトの名無しさん:2013/07/01(月) 09:20:05.09
>>454
>その続きがイミフだけど、
イミフなのはお前が低脳だから。レクチャーしてやろうか? 有料で WWW

> 仮定義って何だかご存知?
知ってるけど、それがなにか?WWWW
458デフォルトの名無しさん:2013/07/01(月) 09:35:37.82
>>457
イミフが意味不明だったんなら、もっとはっきり言ってやる
仮定義はリンカも削除はしねえんだよ、出来なくないんじゃない
459デフォルトの名無しさん:2013/07/01(月) 09:53:57.83
>>458
そういう機能を持つリンカー実在するけど、それが何か? WWWW
460デフォルトの名無しさん:2013/07/01(月) 09:54:33.53
>>459
環境依存スレへどうぞ
461デフォルトの名無しさん:2013/07/01(月) 10:06:50.19
>>460
つまり、>>452は全てのリンカーがそういう機能を持つという主張と誤読したのか WWWW
恐るべき低読解力 WWWW
462デフォルトの名無しさん:2013/07/01(月) 10:26:42.79
朝から低脳を2体、駆逐してしまった。WWWW
463デフォルトの名無しさん:2013/07/01(月) 10:37:48.72
>>462
低脳はお前だよ
すごい誤読w
464デフォルトの名無しさん:2013/07/01(月) 10:45:57.11
>>463
>>460はお前じゃないという主張か。それなら>>459に戻る事になって

>仮定義はリンカも削除はしねえんだよ、出来なくないんじゃない
仮定義オブジェクトを削除する機能を持つリンカー実在するけど。WWWW
465デフォルトの名無しさん:2013/07/01(月) 10:54:44.59
なんでこんな荒れてるんだ
466デフォルトの名無しさん:2013/07/01(月) 10:54:53.91
>>464
そういう話になるとスレ違いだっつーの
頭悪いなあ
467デフォルトの名無しさん:2013/07/01(月) 10:55:44.66
>>465
いやどうも前頭葉に欠陥があるアホが一匹紛れ込んでるようで
468デフォルトの名無しさん:2013/07/01(月) 10:57:22.60
>>465
アホが二匹いるから荒れる
469デフォルトの名無しさん:2013/07/01(月) 10:58:21.21
>>468
お前一匹だけだよ馬鹿は
470デフォルトの名無しさん:2013/07/01(月) 11:13:37.66
>>466
>仮定義はリンカも削除はしねえんだよ、出来なくないんじゃない
これがスレ違いでは無く、

>仮定義オブジェクトを削除する機能を持つリンカー実在するけど。WWWW
これがスレ違い? バカの思考回路はまったくわからない WWWW
やっぱ、バカは駆逐すべきだな WWWW
471デフォルトの名無しさん:2013/07/01(月) 11:47:51.67
>>470
うん、スレ違い
それは環境依存の話
専用のスレがあるからそこに行って
472デフォルトの名無しさん:2013/07/01(月) 12:03:11.87
>>471
そんなら「イミフ」じゃなくて「スレ違い」だろ。 WWWW
バカの後知恵はやっぱりバカ WWWW
473デフォルトの名無しさん:2013/07/01(月) 12:18:46.93
名誉コテの襲名を認める
今後 198ぽ と名乗ってくれ
474デフォルトの名無しさん:2013/07/01(月) 12:28:36.16
>>472
「イミフ」なんて言ってませんよ
人違いでは?
475デフォルトの名無しさん:2013/07/01(月) 12:47:41.65
>>474
>>454のバカじゃないなら引っ込んで炉。
476デフォルトの名無しさん:2013/07/01(月) 12:51:20.80
>>475
引っ込むか引っ込まないかは俺が決める事
お前に言われる筋合いはない
477デフォルトの名無しさん:2013/07/01(月) 13:10:32.07
>>476
お前にたいして、引っ込んで炉とか死んでしまえとか駆逐してやるとか、罵る権利はオレの固有の権利

死んでしまえゴミクズ WWWW
478デフォルトの名無しさん:2013/07/01(月) 13:24:38.87
477 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

( ゚∀゚)アハハ八八ノヽノヽノヽノ \ / \/ \
479デフォルトの名無しさん:2013/07/01(月) 13:31:14.49
WWWWと書いとけばゴミクズよけになるって事か。WWWW
こりゃいい
480デフォルトの名無しさん:2013/07/01(月) 13:33:47.28
479 名前:あぼ〜ん[あぼ〜ん] 投稿日:あぼ〜ん

このようにIDなどなくても自分であぼ〜ん出来ます
481デフォルトの名無しさん:2013/07/01(月) 13:40:46.27
www どれどれ
482デフォルトの名無しさん:2013/07/01(月) 13:47:49.76
www であぼ〜んしたわけじゃねーんだよ
キチガイの発言を手であぼ〜んしてるだけだからな
483デフォルトの名無しさん:2013/07/01(月) 13:49:54.35
ある意味IDであぼーんするよりも屈辱的だよな
484デフォルトの名無しさん:2013/07/01(月) 13:52:41.56
実際は読んでるのに脳内アボーンして、それをわざわざアピールしてるほうがどうかと思うけど。
485デフォルトの名無しさん:2013/07/01(月) 13:54:46.71
読んでからあぼーんしてるから屈辱的なんだろうが

やっぱり頭おかしいな
486デフォルトの名無しさん:2013/07/01(月) 13:56:19.54
何らかのレスを返す→まだレスが返される価値がある書き込み
あぼーんされる→もはやレスを返す価値もない
487デフォルトの名無しさん:2013/07/01(月) 13:57:20.41
本人は煽ってるつもりだったのか。
反論できなくて悔し紛れに勝利宣言して逃げてるのと同じように見えるわ。
488デフォルトの名無しさん:2013/07/01(月) 14:10:21.09
レスする価値さえ無いとか言いながら、読んだ事を律儀に報告する池沼 WWWW

死んでしまえゴミクズ WWWW
489デフォルトの名無しさん:2013/07/01(月) 15:17:56.57
うるさいゴミ
490デフォルトの名無しさん:2013/07/01(月) 19:00:18.54
踊る阿呆に見る阿呆
491デフォルトの名無しさん:2013/07/01(月) 19:29:52.55
あぼーんした結果をコピペするヴァカって何がしたいの?
492デフォルトの名無しさん:2013/07/01(月) 19:30:11.55
当然だろム板にいてもプログラムを書けないからこそhogeに妙にこだわったり
人の事を馬鹿呼ばわりする位しか出来ない
493 ◆QZaw55cn4c :2013/07/01(月) 20:25:17.67
>>455
いい線いってたと思ったんだけど勘違いか?じゃ、>>343 回答を訂正するね

>extern int array[10000];
>こういう定義がふくまれるヘッダーファイル
ってことは、少なくとも一つどこかに実体を定義しているんだね。なお、extern だから宣言だね

>arrayを使っている(定義している)モジュールをリンクしなければarrayの領域は確保されないが、
>int array[10000];
>では、使う使わないに関わらず領域が確保されてしまう。

そりゃそうだがそのarray[10000] 含みのヘッダをインクルードするんだから
array[10000] を実質的に定義しているモジュールもいずれはリンクするんでしょう?
extern の有無に関わらず、その二つかそれ以上のモジュールで共用する array[] が一つ確保されるんだから問題ないんじゃないの?

え?array[10000] を定義しているモジュールをリンクしないの?そのヘッダをインクルードする .c ファイルが一つだけ?それってなんの意味があるの?
二箇所以上のところから参照されるからこそ、共通部分ヘッダとして切り分けて分割コンパイルするわけでしょ?
一つの *.c ファイルしかインクルードしないヘッダに意味はないし、そこで領域を無駄に確保するとかいわれてもねえ‥‥その array[10000] は .c に書くのが常識よね
494 ◆QZaw55cn4c :2013/07/01(月) 20:27:24.24
>>490
同じ阿呆なら踊れ、踊りまくれ!!
495 ◆QZaw55cn4c :2013/07/01(月) 20:30:36.36
>>452
>参照され無くても存在する事に意味があるオブジェクトもある
参照されなくても、というのはちょっと言いすぎだとおもうけど、volatile を付けたくなるやつが雰囲気似ているよね、まだまじめに使ったことは一度もないけれども
496 ◆QZaw55cn4c :2013/07/01(月) 20:31:38.66
>>465
荒れているようにみえて結構たのしいんですけど
497デフォルトの名無しさん:2013/07/01(月) 20:41:04.77
>>492
バカをバカと罵って何が悪い。WWWW

今朝の自爆ギャグには感動したので、まとめてみた WWWW
www54.atwiki.jp/qzaw55cn4c/pages/16.html
498デフォルトの名無しさん:2013/07/01(月) 20:49:52.84
>>493
windows.h
はい、論破 WWWW

>>495
> 参照されなくても、というのはちょっと言いすぎだとおもうけど、volatile を付けたくなるやつが雰囲気似ているよね、まだまじめに使ったことは一度もないけれども

全然違う。宿題コーダーには永遠に縁のないプログラミングテクニックだから知らんでもいい。WWWW
499 ◆QZaw55cn4c :2013/07/01(月) 21:10:28.71
>>498
>windows.h はい、論破 WWWW
インポートライブラリ‥‥‥
500デフォルトの名無しさん:2013/07/01(月) 21:21:24.87
これだけ自信たっぷりで、これは恥ずかしい
501デフォルトの名無しさん:2013/07/01(月) 21:23:16.10
volatileってあれ使い物にならないだろ
ちゃんとmutex使わないとやばい
502デフォルトの名無しさん:2013/07/01(月) 21:24:04.71
>>499
まだ足掻くのか? まとめるぞ WWWW
単一のヘッダーに複数のオブジェクトモジュールの宣言をまとめて記述する事は当たり前に行われている。

しかし、lsで調べるという発想には唯々、笑うばかりだ、あー腹痛てー
503デフォルトの名無しさん:2013/07/01(月) 21:31:34.86
>>497
動画にしてYouTubeにアップしてくれ
504 ◆QZaw55cn4c :2013/07/01(月) 21:59:38.99
>>501
volatile だけじゃだめね、消えない呪文にすぎないから

>>500
全然、自信たっぷりじゃないと思うんだけれど‥‥
windows.h に仮定義が見当たらないのでちょっと困ってる

>>502
>一のヘッダーに複数のオブジェクトモジュールの宣言をまとめて記述する事
すりかえないでね。
今言及しているのは一つのオブジェクトモジュールでしか使用されない宣言をヘッダに追い出していること
*.lib や *.dll 用のヘッダでリンクないしはダイナミックリンクしたときに実体が増殖するものがあるの?

>lsで調べるという発想
たしかにどーかしてた、これは末代までの恥
505デフォルトの名無しさん:2013/07/01(月) 22:13:58.89
同じ穴の狢ってことね
相手した俺がバカだった
506デフォルトの名無しさん:2013/07/01(月) 22:20:24.03
>>504
すり替えてねーぞ

複数のオブジェクトモジュールの宣言を一つのヘッダーファイルにまとめる事は常識
>>343は、その中の一つのオブジェクトモジュールがexternな変数を公開しているケースを指摘している。

windows.hはlsでファイルサイズ調べるような低脳だから、一つのヘッダーファイルにまとめるという常識がないと予想して例示したに過ぎない。 WWWW
507 ◆QZaw55cn4c :2013/07/02(火) 08:56:29.67
>>506
いや、すりかえてるね。

windows.h に仮に仮定義があったとして、そうすると、windows.h がその宣言をとりまとめているオブジェクトモジュール(kernel32.dll, user32.dll, gdi32.dll) にその仮定義の実体があるんだよね
そのとき、windows.h の仮定義により、(ダイナミック)リンクした結果、その仮定義の実体が増殖するの?
>>343 は増殖すると主張しているように見えるんだけど。

>複数のオブジェクトモジュールの宣言を一つのヘッダーファイルにまとめる事は常識
で、そんなときに仮定義を使用してもその仮定義により共用される領域が一つつくられるだけで問題ないよね。
複数の *.c のヘッダを一つの *.h にまとめて書く状況において、リンクした結果仮定義を使用して「無駄な領域」が生成される事例があるのなら、例示してみてよ
508デフォルトの名無しさん:2013/07/02(火) 09:11:37.97
Qは最近病気の進行具合がひどくないか?w
マジで入院してくれ
そのうちリアルで事件でも起こしそうな雰囲気
509デフォルトの名無しさん:2013/07/02(火) 10:50:21.48
>>507 駆逐してやる!!
ほらよ、キチ外。まだ恥晒し続けるのか? WWWW
お前はヘボでこの板の最下層だって事を理解しろよ。 WWWW
w.c:
#include <windows.h>
int main(){ return 0;}
objidl.hをカレントディレクトリにコピーし、
objidl.hのEXTERN_C const IIDをなんでもいいけど、例えば
EXTERN_C const IID IID_IMarshal;を
const IID IID_IMarshal;に変更
cl -I. w.c /link /opt:noref /map
w.mapには
0003:00001ef0 IID_IMarshal 000000014000def0 <common>
と領域が確保されたことが出力されている
さっきの変更を戻し再コンパイルすれば
w.mapには当然のことながらIID_IMarshalのエントリは無い。
510デフォルトの名無しさん:2013/07/02(火) 11:40:06.03
>>509
>>497のWikiに是非まとめといてくれww

そして>>497のURLは次のスレの頭に貼ろうぜw
511デフォルトの名無しさん:2013/07/02(火) 12:45:48.77
qzはvolatileをなんだと思ってるんだ?
512デフォルトの名無しさん:2013/07/02(火) 13:28:55.30
何だここ?
価値のある情報が一つもない肥溜めみたいなスレだなw
513デフォルトの名無しさん:2013/07/02(火) 13:35:06.36
糞には何でも肥溜めに見えるさ
514デフォルトの名無しさん:2013/07/02(火) 13:58:10.64
ココのレベルは数ヶ月前に下がった
515デフォルトの名無しさん:2013/07/02(火) 15:00:28.52
516デフォルトの名無しさん:2013/07/02(火) 19:05:00.23
>>510
lsの笑撃に比べると、まとめるモチベーション上がらない。WWWW

>>515
QzはJavaも知らないぞ。二分木を実装出来なくて、欠陥言語認定してる。 WWWW
517デフォルトの名無しさん:2013/07/02(火) 19:08:40.07
>>516
んなあほな。
518デフォルトの名無しさん:2013/07/02(火) 21:39:27.91
ffmpegでmp4からオーディオデータを抽出しようと思っているのですがmp3やaacなどいろいろな形式で出てきます
これらのファイルをどう判別したらいいのでしょうか?
519デフォルトの名無しさん:2013/07/02(火) 21:45:05.35
MediaInfoとか真空波動研とかどうやってるんだろうな
520デフォルトの名無しさん:2013/07/02(火) 21:56:54.35
>>510
ページ追加 WWWW
www54.atwiki.jp/qzaw55cn4c/pages/17.html
521デフォルトの名無しさん:2013/07/02(火) 22:07:12.14
>>520
ナイスww
522デフォルトの名無しさん:2013/07/02(火) 22:43:05.31
>>518
mp4コンテナの仕様書を入手する。
それを参照してプログラムを作る。
523デフォルトの名無しさん:2013/07/02(火) 23:30:09.86
超初歩ですが、
short int sia = 32768;
の場合、
printf("sia=%d sia+1=%d\n", sia, sia+1);
で出力した場合、オーバーフローを起こして
sia=-32768 sia+1=-32767
となりますが、
short int sia = 32767;
の場合、上記同様の出力をおこなった場合、
sia=32767 sia+1=32768
となります。なぜsia+1はオーバーフローを起こさないのでしょうか?
524デフォルトの名無しさん:2013/07/02(火) 23:47:10.23
>>523
int に暗黙にキャストされてるんじゃね?
525デフォルトの名無しさん:2013/07/03(水) 00:00:00.10
>>524
やはり暗黙に型変換されてるっぽいんですね・・・。ありがとうございます。

環境:vs2010ee
526デフォルトの名無しさん:2013/07/03(水) 00:07:29.22
>>523>>524
だな
前者も後者も sia + 1 を評価する前に sia が型プロモーションを受けてintに格上げされる
その場合short int = 16bit、int = 16bit or 32bit or 64bit だと、最上位ビットが符号ビットと
して扱われて int になるので負になる
527デフォルトの名無しさん:2013/07/03(水) 00:16:35.16
(int)(a+1) か (int)a+1 かの違いな訳だ
528デフォルトの名無しさん:2013/07/03(水) 00:24:37.25
>>527
(short)(sia+1)
で、オーバーフロー(-32768)になりました。こんな書き方あるんですね。勉強になりました。
ありがとう。
529デフォルトの名無しさん:2013/07/03(水) 00:26:23.49
俺は規格票を読む前にコンパイラが吐いたコードを逆アセンブルで読んでしまう
悪い癖があるからなあ

まあそのお陰で規格票の謎の文の意味が理解出来た事もあるけど
530デフォルトの名無しさん:2013/07/03(水) 01:02:04.69
>>528
オーバーフロー時の挙動は規格Cとして未定義なので
厳密には正しいCプログラムとして成立していない
(unsignedな変数の場合は別)
531 ◆QZaw55cn4c :2013/07/03(水) 01:34:37.03
>>509
いくらなんでもそりゃすりかえでっせ.
調べるんだったら extern の有無によっては,リンク後の結果でライブラリ側のシンボル先のオブジェクトと呼び出し側のシンボル先のオブジェクトが同一じゃないことがあるってことじゃないかのう?
MSVC はよく知らんので mingw で示してくれんかのう

それにしても,ちっ,cl って,dll 内の変数をインポートするのに,いちいち __declspec(dllimport) つけなきゃならんのかよ,.わざわざ .def まで書かせといてこれかい,
link, おまえ, *.lib の中のシンボルくらいさがしてくれよー.
端から対称性がないんだったらこりゃ,ネタも使えんわ
http://msdn.microsoft.com/ja-jp/library/hyx1zcd3(v=vs.90).aspx

main.c http://codepad.org/XsM9VPRk
sub.c http://codepad.org/URWK3dP2
sub..h http://codepad.org/Q0LMfmMB
sub.def http://codepad.org/rMIhklQX
ふつうの makefile http://codepad.org/PFPv5wRU
dll を作る makefile http://codepad.org/gM6YbWIS
532 ◆QZaw55cn4c :2013/07/03(水) 01:47:17.16
>>520
追加しといてね.
533デフォルトの名無しさん:2013/07/03(水) 02:31:44.73
>>520
出来ればC入門者の私にも解るように纏めて欲しい
534デフォルトの名無しさん:2013/07/03(水) 04:32:44.16
>>518
なんのためにffprobeがあるとおもってんの?
535デフォルトの名無しさん:2013/07/03(水) 07:44:37.23
>>531
>arrayを使っている(定義している)モジュールをリンクしなければarrayの領域は確保されないが、
こんな簡単なお題すら記憶しておけない低容量脳。WWWW
そんな脳だから何年やっても最下層のヘボからねけだせねーんだよ。WWWW
すりかえんなよ。WWWW
536 ◆QZaw55cn4c :2013/07/03(水) 08:17:48.04
>>535
まあね

対称性ないしは直交性を追求しているだけなんでね
makefile を変えるだけで 静的リンクと動的リンクをすんなり変えることができればいいんだが、仮定義を絡めると実際の実装ではそうもいかないようだ
そもそも対称的とはいえない(例えば *.dll や *.so を作る人と使う人が同一とは限らない)場合も含めての、例えば extern 抜き主張が無理筋なのは、ある意味仕方のないこと

つきあってくれてありがとね
537デフォルトの名無しさん:2013/07/03(水) 08:24:25.61
急所を削ぎ落されても動き回る奇行種なんて存在するのかと、うんこしながら考えた。wwww
一刀両断が鮮やかすぎて、うなじの急所を削ぎ落された事に気付いてないのか。wwww

> そりゃそうだがそのarray[10000] 含みのヘッダをインクルードするんだから
> array[10000] を実質的に定義しているモジュールもいずれはリンクするんでしょう?
これは完全否定されている。wwww
実例: windows.h wwww

削ぎ落した肉片を見せてやらないと気付かない奇行種。 wwww
巨人並みの生命力だけは評価してやる wwww
538デフォルトの名無しさん:2013/07/03(水) 08:36:08.35
> それにしても,ちっ,cl って,dll 内の変数をインポートするのに,いちいち __declspec(dllimport) つけなきゃならんのかよ,.わざわざ .def まで書かせといてこれかい,
> link, おまえ, *.lib の中のシンボルくらいさがしてくれよー.
dllの仕組みを理解してないのに無理してごまかそうとすると、こういう恥ずかしい発言することになる。wwww
自分の傷口に指突っ込んで広げる奇行種。wwww
539デフォルトの名無しさん:2013/07/03(水) 09:01:16.76
>>536
> つきあってくれてありがとね
降参か? 最下層のヘボという事を自覚する事だ wwww

↓これも取り下げか? wwww
それとも有料レッスンしてやろうか? wwww

From: [437] ◆QZaw55cn4c <sage>
Date: 2013/06/30(日) 23:07:57.24

>正規版にはunsigned charへの変換指定が書いてある
真っ赤な嘘ですねえ,だって,JIS 検索 http://www.jisc.go.jp/app/pager?id=1267490 で JIS X3010 7.19.6.2 を検索しても unsigned char 用の書式指定子なんて見つかんないですからね
お前さんは scanf() 系のどの書式指定子を unsigned char 用だと思ったの?
540デフォルトの名無しさん:2013/07/03(水) 09:59:40.29
>>537
ワロスwww
Wikiネタがまた増えたなwww
541デフォルトの名無しさん:2013/07/03(水) 10:57:50.87
qzはリンクとインポートの区別が出来てないのか
542デフォルトの名無しさん:2013/07/03(水) 11:02:48.00
>>539
qzはhh知らんのか
つかid=1267490って何処見てたんだ?
543デフォルトの名無しさん:2013/07/03(水) 11:30:28.35
>>542
おま、それは有料の情報。wwww
検索って言ってるから画像のpdfなのにctrl-fで文字列検索したんじゃないかな。wwww
544デフォルトの名無しさん:2013/07/03(水) 11:50:36.36
>>543
貧乏人ですまん。有料ページだったのかw
金出したのに見つけられないってことかwww
無料ページで検索かけてもすぐ見つかるのに何やってんだ奴はwww
545デフォルトの名無しさん:2013/07/03(水) 11:57:43.11
有料の情報で検索できないpdfを出すカスがいると聞いて飛んできますた
546デフォルトの名無しさん:2013/07/03(水) 12:02:24.98
>>544
Qzに有料でレクチャーしてやることにしていた情報。wwww

こんなクソみたいな情報でも持たない者にとってはとても重要。
知っていれば>>437のような醜態を晒さずに済む。wwww
547デフォルトの名無しさん:2013/07/03(水) 12:09:22.39
>>546
まあアレは自称上級者で宿題スレに他人のコードを平気で張るキチガイだからw
548デフォルトの名無しさん:2013/07/03(水) 12:14:29.62
http://www.jisc.go.jp/app/JPS/JPSO0020.html

JIS規格番号からJISを検索
「X3010」を入力。
PDFがダウンロードできるようになる。
著作権で保護されていることに同意する。
後は、分かるな。
無料なのに、試したことがないのか。
549デフォルトの名無しさん:2013/07/03(水) 12:19:03.59
>>548
それIE9で何度も試したんだけど途中でDLが止まるんだよなあ
閲覧システムに欠陥があるんじゃねーの?
550デフォルトの名無しさん:2013/07/03(水) 12:24:00.97
>>549
多分システムの欠陥なんだろうね。
インストールされているアクロバットのバージョンも影響するようだ。
551デフォルトの名無しさん:2013/07/03(水) 12:24:04.36
>>549
reader古いんじゃね?
552デフォルトの名無しさん:2013/07/03(水) 12:26:24.42
>>550-551
Acrobat Reader XIだ
消して入れなおしたけどダメ
553デフォルトの名無しさん:2013/07/03(水) 12:27:59.14
しょうがないから本日は無料開放デーという事で>>538の解説もするから
最下層のヘボを笑ってやってくれ。wwww

MSCではシンボルに対して__declspec(dllimport)と指定して、
dllからインポートされるシンボルであることを指定できる。
| __declspec(dllimport) int aaa(void);
| int x(){ return aaa();}
これをコンパイルすると
| call QWORD PTR __imp_aaa
と間接コールのコードが生成される。ところが関数に関しては
__declspec(dllimport)は省略可能で
| extern int aaa(void);
| int x(){ return aaa();}
でも良い。これをコンパイルすると
| call aaa
と直接コールのコードが生成される。ところがこれではdllを呼び出せない
のでどうするかというとリンカーが頑張る。aaaがインポートライブラリ中
に見つかった場合は
|aaa:
| jmp QWORD PTR __imp_aaa
というコード断片を生成して間接コールにする。
554続き:2013/07/03(水) 12:29:17.22
関数に関してはこの方法で__declspec(dllimport)を省略できるが変数の
参照に関してはそうはいかない。
| __declspec(dllimport) int aaa;
| int x(){ return aaa;}
これをコンパイルすると
| mov rax, QWORD PTR __imp_aaa
| mov eax, DWORD PTR [rax]
と間接参照のコードが生成されるが、
| extern int aaa;
| int x(){ return aaa;}
で生成される
| mov eax, DWORD PTR aaa
ではリンカーがどんなに頑張っても間接参照にはできない。
これが関数では省略可能な__declspec(dllimport)が変数では必須である理由。
この本質を理解していれば、↓こんな恥を晒すことはない。 wwww

>>531
> それにしても,ちっ,cl って,dll 内の変数をインポートするのに,いちいち __declspec(dllimport) つけなきゃならんのかよ,.わざわざ .def まで書かせといてこれかい,
555デフォルトの名無しさん:2013/07/03(水) 12:30:49.55
もうQのネタが2個も出来たのかw
今日だけでww
556デフォルトの名無しさん:2013/07/03(水) 12:31:17.03
>>594
無料版は嫌がらせの為に転送速度を絞っている。放置しとけばそのうち表示される。
557デフォルトの名無しさん:2013/07/03(水) 12:31:23.03
>>552
以前、Xにすると閲覧できなくなる不具合があった。
それ以前のバージョンだと閲覧できたんだよね。
Reader XI だと、できるようだけど。
558デフォルトの名無しさん:2013/07/03(水) 19:10:51.36
組み込みのための言語を勉強したいのですが
何かお勧めの本はありますか?

入門ならこれ読んどけってのあればよろしくお願いします
559 ◆QZaw55cn4c :2013/07/03(水) 19:35:28.91
>>553-554
なるほどねえコンパイルの時点ではシンボルがどこに所属しているのかわかんないから仕方ないんだね
コールなら飛び先でいかようにも出来る(コードサイズが増加してもいい)がバイナリのどまんなかでオペコード/オペランドが増えようものならよそをPC相対ジャンプやPC相対コールにできたとしても対応できないや

久々に炎上学習ができて大満足
560デフォルトの名無しさん:2013/07/03(水) 19:44:46.82
うわ痛い・・・
561デフォルトの名無しさん:2013/07/03(水) 20:04:50.00
わざとずらしてるんじゃないの?
562デフォルトの名無しさん:2013/07/03(水) 20:06:27.46
まとめちゃってください!それもできるだけ痛く!
563デフォルトの名無しさん:2013/07/03(水) 20:09:44.90
extern は要らない子!
564 ◆QZaw55cn4c :2013/07/03(水) 20:10:37.39
コテわすれた‥‥
565デフォルトの名無しさん:2013/07/03(水) 20:11:34.42
コテ付けたり外したり恥ずかしい奴だなあ
それもうっかり付け忘れたのを壮大に自爆したり
566デフォルトの名無しさん:2013/07/03(水) 21:00:55.99
自爆ボタンは必須のアイテムですよ、軍艦でもキングストン弁とかつけるじゃないですか
567デフォルトの名無しさん:2013/07/03(水) 22:23:38.93
>>515
なにそれおもしろそうkwsk
568デフォルトの名無しさん:2013/07/03(水) 22:28:14.25
569デフォルトの名無しさん:2013/07/03(水) 23:02:47.41
Qzってmasmとか知ってて経験年数だけは豊富そうだけど、未だに最下層なのは知恵遅れだから?
570デフォルトの名無しさん:2013/07/03(水) 23:06:54.37
すごく初歩的な質問だとは思うのですが、 ” をofstreamで吐き出したい場合、どう書けばいいのでしょうか?
どなたかご教授お願いします
571デフォルトの名無しさん:2013/07/03(水) 23:45:08.15
>>570
普通に
<< "\""
じゃダメなの?
試してないけどね。
572デフォルトの名無しさん:2013/07/03(水) 23:48:39.39
>>571
ありがとうございます!
まだコンパイルしてないけど、いけそうです!
573 ◆QZaw55cn4c :2013/07/04(木) 00:53:01.61
>>553-554
遅くなりました。ありがとうございました。
574デフォルトの名無しさん:2013/07/04(木) 01:33:05.25
こういった断片的な知識を炎上学習で積み重ねても、
お前は絶望的に頭が悪いから最下層からは抜け出せない。WWWW
ある程度の経験があれば変数のインポートにdllimportが必須になってる事に疑問を持って、正解に辿り着ける。普通は。WWWW

わざわざ礼をすることで、炎上学習だったと己を慰めるしかない自己愛性パーソナリティ障害者惨め WWWW
575デフォルトの名無しさん:2013/07/04(木) 01:41:47.68
wwwww
Qみじめwww
576デフォルトの名無しさん:2013/07/04(木) 02:41:10.39
ラーメンタイマーの作り方を教えてくれ
2分40秒と4分40秒のやつ
俺がキッチンとパソコンの前を行き来する時間20秒を引いてある
577デフォルトの名無しさん:2013/07/04(木) 03:05:14.34
>>576
100均でキッチンタイマー買ってきた方が
早いんじゃないの
578デフォルトの名無しさん:2013/07/04(木) 03:11:13.94
>>576
ダイソーで105円で買って来る
579デフォルトの名無しさん:2013/07/04(木) 03:17:00.22
>>577-578
それはだめだ
近くの100均でも一番早くて朝の9時半からだ
あと6時間以上待たなくてはならない
それなら今から1時間かけてでも作ったほうが早い
金もかからないし

それともう一つ
部屋の中に物を増やしたくないというのもある
電子データで済むなら電子データで済ませたい
580デフォルトの名無しさん:2013/07/04(木) 03:18:32.31
>>579
目の前のPCの時計を使う
581デフォルトの名無しさん:2013/07/04(木) 03:32:30.47
>>579
5%以内の誤差まで勘を鍛える
582デフォルトの名無しさん:2013/07/04(木) 04:52:06.40
>>580
今はそうしてるが、
ちょっと一瞬コーディングしようと思って始めると、
気付いたときには10分経ってたなんてことがよくある
>>581
もう少し確実性が欲しい

いいかみんな、
何か勘違いしてるようだが、
ここはム板でありC言語スレだ
そして俺はC言語でラーメンタイマーを作りたいんだ
だからここで質問している
583デフォルトの名無しさん:2013/07/04(木) 04:56:33.19
>>582
プラットフォームは何だ?
584デフォルトの名無しさん:2013/07/04(木) 06:17:34.18
>>574
>>559>>574 の時間差の方が絶望的
585デフォルトの名無しさん:2013/07/04(木) 06:18:24.61
>>559>>573
586デフォルトの名無しさん:2013/07/04(木) 06:33:59.87
$ sleep 2m 40s && aplay alerm.wav
$ sleep 4m 40s && aplay alerm.wav
587デフォルトの名無しさん:2013/07/04(木) 08:05:56.76
>>584-585
その間は必死でgoogleを酷使していたのだろう。 WWWW
最下層のヘボには無理に決まってるのに。 WWWW
結局、さすがのgoogleも無いものは検索できなくて、炎上学習法と後付けする事で
一矢報いたつもりになってるんだろうな。惨めすぎる。 WWWW
588デフォルトの名無しさん:2013/07/04(木) 08:08:13.82
>>582
5分くらい指折り数えて我慢しろよ。声に出して数えるのもいいぞ。
589584,585 ◆QZaw55cn4c :2013/07/04(木) 08:16:14.56
>>587
googleやmsdn酷使はむしろ >>509>>531>>554、というか節をまげて VC++2010 をインストールするところからスタート
>>559>>573 はむしろ内省の期間
前回のバッファオーバーランの時もそうだが、口汚い罵りとフォローが丁寧なことの落差に唖然
590デフォルトの名無しさん:2013/07/04(木) 09:09:24.42
自己正当化に必死なQz(苦笑)

ほらあれだ、砂漠の砂に頭を突っ込んで「これでライオンに追いかけられる事もない」
と言っているラクダの話を思い出す(笑)
591デフォルトの名無しさん:2013/07/04(木) 10:14:42.16
ここまでの流れでqzの知識は昭和で止まってることはわかった
592デフォルトの名無しさん:2013/07/04(木) 11:55:52.39
>>583
Windows7

>>588
>>582の後半部分を読んでください
593デフォルトの名無しさん:2013/07/04(木) 12:06:53.39
標準関数だけでという話だと
time(&time1);
for (;;) {
 time(&time2);
 difftime(&time2, &time1) が 予定時間経過したら脱出
}
時間が経ったことを伝える

こんなもん。 小奇麗な窓でとか音を鳴らすとかそういうのは別の話
594デフォルトの名無しさん:2013/07/04(木) 12:11:25.08
ラーメンタイマーならぐぐって出てきたの使ったほうが早いな
595デフォルトの名無しさん:2013/07/04(木) 12:15:13.01
ラーメンゲロタイマー
596デフォルトの名無しさん:2013/07/04(木) 12:51:06.82
赤いキツネとかどんべえとかにも使うのだろうから
ラーメンタイマーというのは適切ではないな
インスタント麺類タイマーにしてはどうだろうか
597デフォルトの名無しさん:2013/07/04(木) 14:20:07.69
>>591
知識が昭和で止まっていてもまともな知能があれば推論できるし、
規格書は昭和から変わらず英語や日本語で記述されいるので理解
するために平成の知識は不要。

脳に機能的な障害があるのだろう。WWWW
598デフォルトの名無しさん:2013/07/04(木) 14:50:15.85
www
599デフォルトの名無しさん:2013/07/04(木) 18:11:30.06
>>597
おいおい
qzに知能があると思っていたのか?
あれはコピペ厨だぞ?
600デフォルトの名無しさん:2013/07/04(木) 18:27:56.57
qzよりregisterのほうがスレ的に重要
601デフォルトの名無しさん:2013/07/04(木) 21:37:20.79
#include <stdio.h>
#include <time.h>

int main(){
time_t time1 , time2;
time(&time1);
for (;;) {
time(&time2);
if ( difftime(time2, time1) >= (60*2+40) ) break;
}
printf( "Let's go!\n" );
return 0;
}

こう?
CPUのコアの一つが100%に張り付くんだが・・・・・
あと、小奇麗なインドウは要らない
コマンドラインで十分
だけど何かしらの音は鳴らしたい
602デフォルトの名無しさん:2013/07/04(木) 21:54:53.16
>>601
間にSleepっぽいのを挟めばおk
603片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/04(木) 21:56:19.63
今どきのOSでbusy waitはやめれ
printf("\a");で音は出せる
604デフォルトの名無しさん:2013/07/05(金) 07:41:00.65
つか、初めからSleep一つすればいい
605デフォルトの名無しさん:2013/07/05(金) 10:43:56.32
>>603
標準関数郡の縛りで busy wait を排除する方法ある?
606デフォルトの名無しさん:2013/07/05(金) 12:06:34.21
無理じゃないかな。
とりあえず依頼者はWindows限定としていいんじゃない?
607デフォルトの名無しさん:2013/07/05(金) 12:08:47.27
>>605
system で待つ
608デフォルトの名無しさん:2013/07/05(金) 18:48:23.43
実行するときに読み込んだ.datファイル内の" "が"\0"として認識されますか?
もしそうならそれを回避する方法がありますか?
609デフォルトの名無しさん:2013/07/05(金) 19:00:12.55
>>608
C言語の質問じゃねーだろ消えろゴミ。
610デフォルトの名無しさん:2013/07/05(金) 19:04:22.36
>>608
" "←スペースということ?
どういう読み方をするのか、ソースを示してみて
611デフォルトの名無しさん:2013/07/05(金) 19:18:01.85
キーボードで入力されたspaceです
612デフォルトの名無しさん:2013/07/05(金) 19:54:48.04
上についてですが
char st[]="x";
if(st[i]!='\0')
{
count++;
i++;
}
xは.datから読み込むようにしまして、内容は
" tes des "
の両端の""を除く10バイトです
countをprintfするようにして実行すると5になるはなぜだと考えられますか?
613デフォルトの名無しさん:2013/07/05(金) 19:56:27.92
すいませんtesの前にspaceが2個です
614デフォルトの名無しさん:2013/07/05(金) 19:59:43.17
>>612
.datファイルは何の関数で読み込んでるの?
fgets()とか?
615デフォルトの名無しさん:2013/07/05(金) 20:04:02.88
[SPC][SPC]tes[SPC]des[SPC] の10バイト中に \0 は出てこない


char str[] = "x"; とした後、変数 str に対して 10バイト書くのはバッファ突破してる
(x[\0] の2バイト分の器しか用意されていないので)
616デフォルトの名無しさん:2013/07/05(金) 20:08:30.54
鼻から悪魔か
617デフォルトの名無しさん:2013/07/06(土) 00:57:44.80
// instant_noodle_timer.c
#include <stdio.h>
#include <windows.h>

int main(){
Sleep(60*2+40);
printf( "Let's go!\n" );
}

>>602,>>604
こうですか?
わかりません><

調べたんだけど、音はMCIとかってのを使うみたいだな
そうすれば何かしらの音を出せるっぽい
難しいな
618デフォルトの名無しさん:2013/07/06(土) 01:11:54.27
>>617
system("らーめんできた.wav");
でいける

関連付けができてればmp3でもoggでもmpgでもaviでもいける
619デフォルトの名無しさん:2013/07/06(土) 01:14:46.46
3分間のwav作って最後にチン!ていう音入れるだけだろ
プログラムいらんわ
620デフォルトの名無しさん:2013/07/06(土) 01:49:27.03
>>617
Sleep の単位はミリ秒だから1000倍しないと
621デフォルトの名無しさん:2013/07/06(土) 03:27:31.69
#include <stdio.h>
#include <windows.h>

int main(){
Sleep((60*2+40)*1000);
printf( "Let's go!\n" );
system( "happysynthesizer.mp3" );
}

>>618
あざっす
system初めて使った

>>619

>>620
あれはうっかりミスw

みんなありがとう
とりあえず何とか完成した
今後はこういう簡単なものから順次ステップアップしていく予定
次はMMORPG用の汎用鯖を開発する
622デフォルトの名無しさん:2013/07/06(土) 03:44:31.89
バーチャルPCにCentOS突っ込んだ
MMO鯖の仕様書が完成した
http://www.age2.tv/rd05/src/up9968.png

だから次はLinuxで開発することになるな
今日の作業はここまで
623デフォルトの名無しさん:2013/07/06(土) 03:47:22.37
>>621
> 次はMMORPG用の汎用鯖を開発する

#include <windows.h>

int main(){
 system("mmorpgcommonserver.exe");
}
624デフォルトの名無しさん:2013/07/06(土) 04:30:37.92
>>618
それだとWMPが起動するのにかかる時間も考慮しないとだめじゃね?
625デフォルトの名無しさん:2013/07/06(土) 04:45:21.59
ポインタに関する質問です
vipprogのプログラミング言語スレまとめ?みたいなので
#include <stdio.h>

void inc(int x){
x = x + 1;
}

main(){
int a = 5;
inc(a);
printf("%d\n", a);
}
で実行結果が
5
になる理由を読んだのですが、全然分かりません。
void inc(int* x){
*x = *x + 1;
}
というようにポインタを使えば6になる理由も分かりません。
無能ですみませんが教えていただけないでしょうか。
626625:2013/07/06(土) 04:48:28.58
すいませんreturn文による実体化の説明みたら分かりました
間接代入的なことするんですね
627デフォルトの名無しさん:2013/07/06(土) 06:06:56.47
inc関数内の変数xは
main関数から"コピー"して持ってきただけ(値渡し)だから
main関数内の変数は影響されない

詳しくは値渡しと参照渡しで
628625:2013/07/06(土) 06:45:56.58
>>627
感覚的に理解しました。論理的に考えるとまだややこしいけど・・・
ありがとうございます。
629デフォルトの名無しさん:2013/07/06(土) 11:32:51.85
fflush(stdout)
しても文字列が消えないんですがおかしいですか?
printff("hello");
fflush(stdout);

hello残ったままです。
630デフォルトの名無しさん:2013/07/06(土) 11:34:06.18
おかしくないです
631デフォルトの名無しさん:2013/07/06(土) 12:05:47.18
>>629
> printff("hello");

確かに、残ってるのはおかしいな。

そもそも、普通にやるとリンクでエラーになると思うが。
632デフォルトの名無しさん:2013/07/06(土) 12:11:09.25
fflushは書き込もうとする内容を押し出すだけ。
消す機能はない。
633デフォルトの名無しさん:2013/07/06(土) 12:24:22.31
プログラム〜ストリーム〜コンソール
この3者を正確に理解しなければ道は開けない
634デフォルトの名無しさん:2013/07/06(土) 12:49:07.27
\rや\bで書き込んだ文字を削除するわけですが
何故fflushが必要なのか分りません。
fflushって何の役割なんですか?
言葉の意味的にはフラッシュつまり消すという意味なんですけど。
635デフォルトの名無しさん:2013/07/06(土) 12:58:13.73
>>634
あんたバカなの?
言葉の意味的にはバカつまり素晴らしいという意味なんですけど
636デフォルトの名無しさん:2013/07/06(土) 13:00:39.31
だって
print("hello world ")
fflush(stdout);
sleep(pow(10,3))
print("\rheilo world")
でそうなりますし。
fflushないとバグります。
637デフォルトの名無しさん:2013/07/06(土) 13:02:52.07
>>634
> フラッシュつまり消すという意味なんですけど。

はあ?

辞書ちゃんとひいてこい。
638デフォルトの名無しさん:2013/07/06(土) 13:08:06.60
消えるというか揮発って意味ですね
639デフォルトの名無しさん:2013/07/06(土) 13:08:43.36
fflush()の意味も分からずに>>636のコードにどうやってたどりついたんだろう。
640デフォルトの名無しさん:2013/07/06(土) 13:12:02.89
>>639
コピペですよ。
コピペは正しいんだからfflushの用途も正しいんでしょうね。
まぁ技術的難点はこういうものだって覚えておいたほうがいいでしょうかな。
641デフォルトの名無しさん:2013/07/06(土) 13:14:37.12
コピペ元のURLを書いてみて
642デフォルトの名無しさん:2013/07/06(土) 13:16:19.67
出力関数を呼ぶたびに実際にに出力してたらパフォーマンスが悪いんで
出力せずにバッファ(メモリ)に溜めておいて、一定量出力がたまったら
まとめて出力するって動作をするから、printf()を呼んでもバッファに溜まる
だけで実際には出力されないことがある。

バッファの内容を強制的に出力したいときにfflush()を使う。
643デフォルトの名無しさん:2013/07/06(土) 13:17:17.75
コピペとはセミコロンの消える未知の技術である
644デフォルトの名無しさん:2013/07/06(土) 13:17:46.70
printf()のあとにfflushが来る意味が分らないですね。
scanf()の後だと分かるけど。
それとバッファってコマンドラインの事ですか?
それも曖昧で分りません。
645デフォルトの名無しさん:2013/07/06(土) 13:19:14.89
>>644
scanf()の後で使っている奴がいたら、用法の誤り。
646デフォルトの名無しさん:2013/07/06(土) 13:19:17.53
sleep(pow(10,3))

どこからコピーしたコードなんだろうか
647デフォルトの名無しさん:2013/07/06(土) 13:20:20.18
>>644
setvbuf で _IONBF を指定しろ
648デフォルトの名無しさん:2013/07/06(土) 13:20:32.46
>>629 printff("hello");
>>636 print("hello world ")

確かに、未知だわ (w
649デフォルトの名無しさん:2013/07/06(土) 13:22:20.59
scanf()で使うのは分かるけどprintf()で使うのが分からないって、どういう理解をしてるのかを説明してほしいわ。
650デフォルトの名無しさん:2013/07/06(土) 13:23:52.61
>>645
だから本来なら出力される値を
fflushによって書き込まないようにするんでしょ?
そういう理解です。
651デフォルトの名無しさん:2013/07/06(土) 13:25:08.69
MS独自の入力バッファクリアなんてクソ食らえ
652デフォルトの名無しさん:2013/07/06(土) 13:26:10.84
>>651
「クソ食らえ」、つまり意訳すると「どうぞ、糞をお召し上がりください」という事ですね
チョンにとってはご褒美
653デフォルトの名無しさん:2013/07/06(土) 13:26:51.23
>>650
逆だ。
出力される予定だけどまだ出力されてない値を強制的に出力させる操作。
654片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/06(土) 13:28:38.29
fflushで消している訳ではない。"\r"で上書きになるだけだ。
655デフォルトの名無しさん:2013/07/06(土) 13:33:08.65
\rで消してるようなもんでしょう。
656デフォルトの名無しさん:2013/07/06(土) 13:35:18.99
\rで上書きされて消えたように見えるのをfflush()の仕業と思ってたんだろ?
区別しないと。
657デフォルトの名無しさん:2013/07/06(土) 13:39:08.52
でもあれですね。
\rってGUI的な機能ですよね。書いた文字を消すなんて....
端末プログラミングでこんな事ができることに驚いた。
658デフォルトの名無しさん:2013/07/06(土) 13:41:01.84
\r 行頭に戻る

プリンタデバイスにリダイレクトし
文字多重書きで細工(下線つけたり 打ち消し線いれたり)という技巧も昔はやってたな
659デフォルトの名無しさん:2013/07/06(土) 13:41:25.26
英語の辞書じゃなくてヘルプで調べろよw

しかも英語としても意味が違うし
トイレでジャーって流すのがフラッシュだよ

まだ出力してないで溜めておいた内容を
全部出力するのが fflush だよ
660デフォルトの名無しさん:2013/07/06(土) 13:42:02.90
fflush
ttp://linuxjm.sourceforge.jp/html/LDP_man-pages/man3/fflush.3.html


>標準では、入力ストリームに対する動作は規定されていない。

>>650,655
ま、どうしても違うと思いたいなら、それ以上は何も言わないけど・・・。
661デフォルトの名無しさん:2013/07/06(土) 13:42:05.15
>>657
俺も大変驚いている
662デフォルトの名無しさん:2013/07/06(土) 13:45:25.99
\r 受けても何も変化しない端末だと上書きされないよ
663デフォルトの名無しさん:2013/07/06(土) 13:46:18.40
curses とか調べとけ


と書きたかったけど、よくよく見たらどう見ても Windows で
やってるんだろうな。

cmd.exe もエスケープシーケンスぐらいサポートすればい
いのに…
664デフォルトの名無しさん:2013/07/06(土) 13:47:09.11
端末プログラミングでテトリスできるのは\rのおかげなんですよね。
でもscanfでキー入力待ちをしておいてプログラムがそのまま進行するのは
何故ですか?ブロックは落ちますよね?scanfを時間制限かけてスルーしたり
できるんですか?
665デフォルトの名無しさん:2013/07/06(土) 13:47:51.02
そっかー。
GUIから入った人には、\rの動きはイメージ沸かないかぁ。

といっても、私も辛うじてラインプリンタがあったくらいの時代だから、テレタイプとかはしらないけど。。。
666デフォルトの名無しさん:2013/07/06(土) 13:52:57.80
逆だろ
GUI こそ \r の使いどころ
667デフォルトの名無しさん:2013/07/06(土) 13:55:22.52
scanf を socket でいう non-blocking にする仕組みが
コンパイラの方言、若しくは特定のOSであるのでしょう

標準関数には無いよね?
668デフォルトの名無しさん:2013/07/06(土) 14:06:20.56
書いた文字を消すなんて
計算結果を出力するだけの端末プログラミングに必要とされない
からね。\rとか\bとかは異常。
669デフォルトの名無しさん:2013/07/06(土) 15:52:19.93
とりあえずこれで組んでいく

//mmo_server.c
int main(){
InitSystem();
StartDataThread();
StartGameThread();
StartNetworkThread();
StartAdminThread();
while(1){
//スレッドの終了チェック
//終了フラグが立ったら全スレッドを終了させて抜ける
//どれか一つのスレッドが終了した場合も異常とみなして他のスレッドを終了させて抜ける
}
return 0;
}
670デフォルトの名無しさん:2013/07/06(土) 16:34:09.97
昨日の仕様書を読めば分かるが
仕様書を読むのに慣れてない人のために軽く説明しておく

□データスレッド
アカウントやキャラクターデータの入出力を行う
設定により、ファイル、データベース、データベース鯖など複数の選択肢を提供する
保存データの入出力を制御するスレッドであり、データそのものは保持しない

□ゲームスレッド
ここがメイン
キャラクターの移動、攻撃、防御、ステータスの変化、などのあらゆるデータを処理する
ファイルやデータベースなどにデータを保存する際にはデータスレッドへデータを投げる
処理結果の送信データは通信スレッドに投げる

□通信スレッド
受信したデータはゲームスレッドに投げ、ゲームスレッドから投げられたデータは各ソケットに送り出す

投げるってのは専用のキューを用意しておきそこに積んでいくことを指す
データスレッドとゲームスレッドの間にはデータ→ゲーム用と、ゲーム→データ用の2つのキュー、
ゲームスレッドと通信スレッドの間には、ゲーム→通信用と、通信→ゲーム用の2つのキューが、
アクティブなキャラクターの数分必要
671デフォルトの名無しさん:2013/07/06(土) 16:36:24.10
□管理者スレッド
管理のための接続専用スレッドだ
起動した後はここから各種情報を見たり設定変更、鯖の終了等を行う
672片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/06(土) 16:55:30.46
低速通信のキャラの時間経過はどのように扱うの?
673デフォルトの名無しさん:2013/07/06(土) 17:14:11.33
通信が遅いクライアントは表示がガクガクした状態になるけど、全体には影響しないんじゃない?
674デフォルトの名無しさん:2013/07/06(土) 17:25:32.20
ゲームプログラムなら俺に聞け28
http://toro.2ch.net/test/read.cgi/tech/1366526476/
675 ◆QZaw55cn4c :2013/07/06(土) 19:34:50.93
>>663
呪いを調べるとか怖くて
676 ◆QZaw55cn4c :2013/07/06(土) 19:35:38.14
>>667
kbhit()!!
コピペごめんね
677デフォルトの名無しさん:2013/07/06(土) 19:45:28.87
次に通信の内容だが、
内容の種類を示す4byteと、内容を示す可変長byteをセットにしてやりとりする

例えばチャットの場合、先頭から
4byte・・・チャットであることを示す"10"
4byte・・・チャットの内容の文字数
文字数byte・・・チャットの内容
という形だ

攻撃(藏から鯖に送るデータ)なら、
4byte・・・攻撃であることを示す"450"
4byte・・・対象のID
4byte・・・攻撃の種類(必殺技の種類とか)

これはあくまで一例だから、バフはどうするのかとか
攻撃も対象ではなく場所に対して発動させる場合はどうするのかとか
その辺りはきちんと考えて決めていく必要がある
しかも汎用鯖だからな
678デフォルトの名無しさん:2013/07/06(土) 21:41:29.83
>>677
ここはオレに聞けスレなので、鬱陶しいから出て行ってくんない?
679デフォルトの名無しさん:2013/07/06(土) 21:43:59.75
>>678
お前が消えれば済むさっさと出ていけゴミ。
680デフォルトの名無しさん:2013/07/06(土) 21:49:05.99
>>677
ここでやると邪魔だから
ゲーム作るよ → 頓挫
が許される場所でやれ

GEP
http://ex14.vip2ch.com/news4gep/

板情報を追加すれば2ch専用ブラウザでも使える
681デフォルトの名無しさん:2013/07/06(土) 21:57:19.49
>>678
お前みたいに非生産的なカキコしかできないksよりマシw
682デフォルトの名無しさん:2013/07/06(土) 22:00:57.72
社会でも2chでも必要とされない>678
俺が>678の立場だったら吊るね
人として最低限のプライドがあるから
683デフォルトの名無しさん:2013/07/06(土) 22:03:50.30
じゃ早く吊れよ
684デフォルトの名無しさん:2013/07/06(土) 22:05:27.43
またゴミクズかw
685デフォルトの名無しさん:2013/07/06(土) 22:11:10.41
>>678みたいな池沼が質問来たときに
「何がしたいのかを書いてくれないと、解決法の教えようがない。
本当にそんな処理が必要なの?」
とか言い出すんだよ。
自己顕示欲を満たしたいだけの典型的な池沼。
知能に問題があるって本当にハンディキャップだな。
686デフォルトの名無しさん:2013/07/06(土) 22:18:04.50
>>678
>鬱陶しい
個人的感想はブログに書いてろバーーーーーーカwwwwwwwwwwwwww
687デフォルトの名無しさん:2013/07/06(土) 22:19:21.91
ゴミクズがゴミクズゲーム作ろうとかエネルギーの無駄だから。
688デフォルトの名無しさん:2013/07/06(土) 22:25:07.06
建設的な書き込みのできない>>678が調子に乗ってるときいて、
689デフォルトの名無しさん:2013/07/06(土) 22:29:39.08
ゴミクズが生成する情報はゴミクズ。
ゴミクズは建設的な書き込みなど出来ない。
690デフォルトの名無しさん:2013/07/06(土) 22:33:17.39
良い感じに荒れて来ました。
IDがでれば>>677のようなゴミクズも楽にスルー出来るんだがなあ。
691デフォルトの名無しさん:2013/07/06(土) 22:41:09.97
ゲームそのものを作る話じゃなかったような・・・・・
692デフォルトの名無しさん:2013/07/06(土) 22:48:05.21
>>678は荒らし目的だろうな。
救いようのないゴミクズ。
693デフォルトの名無しさん:2013/07/06(土) 23:02:05.58
>>678
お前誰にも必要とされてないんだからこのスレ見なくていいんだよ?
嫌なら見るなバカガキ。
694デフォルトの名無しさん:2013/07/06(土) 23:16:27.45
というより片山がスルーされて逆恨みしてんだろ

でなければ噛みつき方が不自然
695デフォルトの名無しさん:2013/07/06(土) 23:17:38.22
>>477
ここはゴミ捨て場じゃねーぞ。ゴミクズはゴミ箱に捨てろ。
696デフォルトの名無しさん:2013/07/07(日) 02:06:23.51
>>690
IDが無くても手であぼーんしてますが何か?
お前内容を読まずにあぼーんするつもりか?
697デフォルトの名無しさん:2013/07/07(日) 02:09:02.66
そう言や最近Q全く見ないなw

頭が悪い事を完全に暴露されてついに病気が脳に来たか?
698デフォルトの名無しさん:2013/07/07(日) 07:09:02.80
脳に来るって、梅毒か? 狂犬病?
699デフォルトの名無しさん:2013/07/07(日) 09:17:46.14
700デフォルトの名無しさん:2013/07/07(日) 09:41:17.84
>>696
当たり前だ。お前のようなゴミクズが捻り出すのはゴミクズレスだけ。
読まずにゴミ箱で問題ない
701デフォルトの名無しさん:2013/07/07(日) 10:33:43.56
>>700からゴミ箱の臭いがする
702デフォルトの名無しさん:2013/07/07(日) 10:35:57.86
fgets()で予めファイルを指定しておいて読み込むのは分かるのですが、実行時にファイルを指定して毎回違うデータを読み込みたいときはどうすればいいでしょうか。
703デフォルトの名無しさん:2013/07/07(日) 10:49:48.70
>>702
fopenで開くファイル名を変数で指定しちゃったらいいよ。
その変数に入れるファイル名を実行時に指定。
704デフォルトの名無しさん:2013/07/07(日) 13:09:25.78
質問です。
int bh[170][60][11200]=(int *)malloc(100);
のところで「無効な初期化子」とエラーが出ました。
これはどういうことなのでしょうか。
705デフォルトの名無しさん:2013/07/07(日) 13:10:28.11
bhはポインタじゃない
706704:2013/07/07(日) 13:22:08.45
回答ありがとうございます。
mallocはポインタしか使えないのですね。
メモリ確保後、配列で扱おうと
int *bh;
bh=(int *)malloc(100);
int a=0,b=0,c=0;
bh[a][b][c]=0;
としたのですが、配列が定義されていないと出ました。
当然だろと思ったのですが、
以下のプログラムは動くので、よく分かりません。
教えていただけないでしょうか。
#include <stdio.h>
#include <stdlib.h>

int main()
{
int i;
int *heap;
heap = (int *)malloc(sizeof(int) * 10);
if (heap == NULL) exit(0);

for (i = 0;i < 10;i++) {
heap[i] = i;
}
printf("%d\n",heap[5]);

free(heap);

return 0;
}
707デフォルトの名無しさん:2013/07/07(日) 13:31:06.72
>>706
とりあえず構造体にしておけば簡単
708704:2013/07/07(日) 13:45:29.38
すいません、自己解決しました。
int ***bh;
bh=malloc(sizeof(int*)*3);
としたらコンパイルできました。
回答ありがとうございました。
709デフォルトの名無しさん:2013/07/07(日) 13:50:51.36
コンパイルだけできても意味なくね?
710デフォルトの名無しさん:2013/07/07(日) 13:51:45.68
キミが最初にやりたかったのはこのように記述する。
int (*bh)[170][60][11200]=malloc(sizeof(*bh));

アクセスするときは(*bh)[0][0][0]
711704:2013/07/07(日) 13:53:40.06
何度もすみません。

int ***bh,i,j,a;
bh=malloc(sizeof(int*)*30);
for(i=0 ; i<70; i++){
for(j=0 ; j<160 ; j++){
for(a=0;a<11200;a++){
printf("debug\n");
bh[j][i][a]=0;
printf("debug\n");
}
}
}

としたところ、
debug
Segmentation fault (コアダンプ)
となりました。
bh[0][0][0]=0;
だけでセグフォになったみたいですが、なぜなのでしょうか・・・。
712704:2013/07/07(日) 13:58:56.12
709と710が書き込まれる間に711を書き込んでいました。
710の通りにしたらできました。
ありがとうございました。
713デフォルトの名無しさん:2013/07/07(日) 20:11:47.73
>>678みたいなのは普通にスルーするだけだからみんな構わなくていいよ

それより開発を続けていく
スレッドの作成は置いておいて、まずはキューの実装から行っていく
昨日書いた通りキューはいくつかあるが、まずはゲームスレッドと通信スレッドの間のキューを実装していこうと思う
キュー用のバッファはグローバルとして定義しておき、
ここに追加・取り出しをする
昨日の説明通り、4byteのヘッダに続いて様々なbyte数のデータが続くが、どのような実装がよいだろうか?
714デフォルトの名無しさん:2013/07/07(日) 20:22:29.03
今のところ考えているのはこの方式である

ゲームスレッド→通信スレッドの場合、
char queue[4*1024];
としてキュー用のバッファを確保しておくとする

ゲームスレッドは書き込み位置を記憶するためのポインタchar *w;をもっており、
通信スレッドは読み出しの位置を記憶するためのポインタchar *r;を持っている
そして書き込み/読み込みが終わったときに、次の書き込み/読み込み位置をw/rに保持する
当然起動した瞬間は、queue=w=rであり、キューに追加されてw>rとなった時点で読み出しが行われる
但し、このバッファは使い回すため、w<rとなる可能性もあり、読み出し条件はw!=rとしたほうがよいと思われる
また読み出しが追い付かない場合、キューに溜まっているデータが確保したバッファサイズを越えた瞬間重大なエラーを引き起こす

C言語でのキューの実装はこれでいい?
715デフォルトの名無しさん:2013/07/07(日) 20:32:45.12
>>713-714
ゴミクズには無理。全然ダメ。
716デフォルトの名無しさん:2013/07/07(日) 20:36:41.25
>>714
アプリを作るための丸ごとの相談をしたいなら
専用スレ立ててそこでやってくれよ
717デフォルトの名無しさん:2013/07/07(日) 22:41:34.47
配列の要素数の求め方について質問があります。
main関数から sub関数に、配列array を引数で渡して、sub関数内で配列arrayの要素数を求める方法はありますか?
以下のコードでは、main関数内では要素数を求められますが、sub関数内では求めることができませんでした。

#include <stdio.h>
#define N(array) (sizeof(array)/sizeof(array[0]))

void sub(int *array) {
  printf("%d\n", N(array));
}
int main(void) {
  int array[10] = {0};
  printf("%d\n", N(array));
  sub(array);
  return 0;
}
実行結果:
10
1
718デフォルトの名無しさん:2013/07/07(日) 22:53:24.79
>>717
無い
719デフォルトの名無しさん:2013/07/07(日) 23:08:58.07
>>717
方法1.
互換性は下がるが、配列の先頭アドレス付近にある、要素数データを使う。

方法2.
配列の最後に、門番データ(仕様上、有効データにはないもの)を置く。
例えば、正の整数だけという仕様なら、
int array[10];
array[9]=0;
720 ◆QZaw55cn4c :2013/07/07(日) 23:18:02.60
>>719
>配列の先頭アドレス付近にある、要素数データ
配列にそんなものはないのでは? malloc() された領域の話、とかだったらわからないわけでもないのですけど
721717:2013/07/07(日) 23:22:12.67
>>718-719
ありがとうございます。要素数も引数で渡すか、門番を使うことにします。
722デフォルトの名無しさん:2013/07/07(日) 23:27:58.28
エキスパートCプログラミングでも読んでポインタの基礎を学ぶといい。
723717:2013/07/07(日) 23:48:11.91
>>722
Amazonのレビューを読むと、配列とポインタの違いについての細かい説明があるようですね。
この機会に勉強してみようと思います。ありがとうございました。
724デフォルトの名無しさん:2013/07/07(日) 23:57:38.16
その場合普通、番兵(sentinel)
門番(gate keeper)は使わない。
725デフォルトの名無しさん:2013/07/08(月) 15:33:06.29
今までmallocした後freeなんて使ったことないんだけど
アプリケーションでこんな事やったら大事故が起きたりするの?
どの本にもfree必要ねーしwwとか書いてるけど。
726デフォルトの名無しさん:2013/07/08(月) 15:38:50.81
専用スレがあるからそっちに行きなさい。
727デフォルトの名無しさん:2013/07/08(月) 15:39:55.85
>>725
メモリリークするでござるよ。コンピュータのメモリがなくなって
コンピュータの動作が鈍重になり、いずれは処理不可能な状態におちいる。
すぐ実行を終了するようなものだと問題になることはないけどね。
728デフォルトの名無しさん:2013/07/08(月) 15:43:01.97
>>726
mallocの専用スレはここでしょうwww

>>727
でもランタイムでfreeは必要ないよね?
return 0で強制的に開放されるんだし。
729デフォルトの名無しさん:2013/07/08(月) 15:46:36.45
>>728
ずっと実行しっぱなしのものだったら解放していかんとやばいでしょ。
すぐに実行が終了するものだったら必要ない。
730デフォルトの名無しさん:2013/07/08(月) 15:47:18.17
ところがその話題は宗教戦争になるから隔離スレがある。
731デフォルトの名無しさん:2013/07/08(月) 15:49:40.05
windowsでコマンドプロンプト以外で実行端末ってありますか?
732デフォルトの名無しさん:2013/07/08(月) 15:52:29.80
>>731
ckwてのがあるよ。

ckw-mod on GitHub by ckw-mod Project
http://ckw-mod.github.io/
733デフォルトの名無しさん:2013/07/08(月) 15:55:52.95
>>732
むしろ作れますか?
それも技術者が作ったんでしょう?
実行端末ってどうやって作るんでしょう。
734デフォルトの名無しさん:2013/07/08(月) 16:17:25.89
735デフォルトの名無しさん:2013/07/08(月) 16:53:56.89
>>729
はぁ?
ゴミは黙ってろよ
メモリは確保したままになってるだけでそれだけ電気食うんだぞ
ただでさえ電気代が値上げだっつってんのに電気食うようなことを教えるな
電気食えばそれだけ発熱するから部屋も暑くなるし
お前電力会社の社員か何か
キモすぎ早く回線切れゴミ
736デフォルトの名無しさん:2013/07/08(月) 17:01:36.30
資源が勿体無いから専用スレ行こうぜ
http://toro.2ch.net/test/read.cgi/tech/1359549517/l50
737729:2013/07/08(月) 17:04:14.90
>>735
申し訳ありませんでした。わたしの軽率な発言は日本の電力消費を
上げ、みさなさまの会社の光熱費を上げ経営を圧迫し、連鎖的倒産に
導くばかりか、できるだけエアコンを使わず服装でカバーしようという
クールビズの活動のモチベーションまで下げかねないものであり、
地球温暖化という世界規模での異常事態を悪化させかねないものでした。
もしそうなれば南極の氷が融けて東京がビル50回の高さまで水没すると
聞いています。なんてことをしてしまったんだという思いでいっぱいです。
わたしは電力会社に勤めているわけではありませんが、電力の消費について
不適当な発言をしたことは間違いありません。
二度とこのようなことはいたしません。回線を切ってネットサーフィンの
時間をいままでの自分を省みる時間にあてたいと思います。本当に申し訳ありませんでした。
738デフォルトの名無しさん:2013/07/08(月) 17:15:53.90
原発ガンガン動かせばいいんだよ。
そうすれば電気代も安くなってfree()も減らせる。
まさかfree不要論を唱えるプログラマーの中に反原発派なんかいないよな?
739デフォルトの名無しさん:2013/07/08(月) 17:17:53.70
そもそもいまどきCで書くコードって大半は何かのプラグインとかモジュールとかじゃないの?
なにか不具合起こっても勝手にexitするようなわけにいかないことが多いだろうし、
きっちり終了処理書く癖つけとくべきだと思うけど
740729:2013/07/08(月) 17:18:31.53
>>738
freeするのにCPUさんがガンガン電気使ったりして。
741729:2013/07/08(月) 17:19:06.35
>>739
だね。それが現実的。
742デフォルトの名無しさん:2013/07/08(月) 17:30:05.30
いまどきCとかいうけど
高速なCが今時扱いされるのはなぜ?
743デフォルトの名無しさん:2013/07/08(月) 17:31:40.25
Cすら使えない低能の負け惜しみに振り回されてる>>742
744729:2013/07/08(月) 17:34:11.43
>>742
PythonとかHaskellとかJavaとかC並みに高速で安全性の高い言語
がありコンピュータの処理速度も上がり、言語による実行速度の
違いをさほど意識する必要がなくなってきたいまどきということでござろうよ。
745デフォルトの名無しさん:2013/07/08(月) 18:09:09.79
>>744
ベンチ結果も書かずに何言ってるの?
お前が勝手に意識しないだけだろ、キメェ
746729:2013/07/08(月) 18:13:45.68
>>745
黙れ羊野郎、はい論破。
747729:2013/07/08(月) 18:20:31.25
別に俺はー、>>745に理解してもらおうとは思ってねーしー、
俺はそう理解したと述べてるだけだしー、ベンチ結果が知りたければ
自分で勝手にベンチすればいんじゃねつー感じだしー、
一生メーメーほざいてろよって感じ。
748デフォルトの名無しさん:2013/07/08(月) 18:30:40.85
ここまで俺の自演
749デフォルトの名無しさん:2013/07/08(月) 18:53:48.80
Haskellって最近名前だけよく聞きますね。
メリットあるの?
750デフォルトの名無しさん:2013/07/08(月) 18:59:23.86
>>749
>>729みたいな知恵遅れでも使える
751デフォルトの名無しさん:2013/07/08(月) 19:05:33.33
などと意味不明なことを供述しており、警察は慎重に調べを進めるとしています
752 ◆QZaw55cn4c :2013/07/08(月) 19:45:42.89
>>731
cygwin の bash もわりと
753デフォルトの名無しさん:2013/07/08(月) 19:45:59.18
>>746
羊の寄せ乳知らない童貞野郎は引っ込んで露
754 ◆QZaw55cn4c :2013/07/08(月) 19:49:19.28
>>744
それがそうでもないんだ‥‥
うちの会社のとある24時間システム、java で組んであるけど、タスクマネージャをみるたびにページファイル使用量が増えていく‥‥
そして、ある日突然リブートするんだ‥‥

GC なんて信じらんない
755 ◆QZaw55cn4c :2013/07/08(月) 19:52:28.04
756729:2013/07/08(月) 20:05:22.36
>>754
タスクマネージャを見なきゃいんじゃないでしょうかというバカなことをいうのは
やめておこうと思いますが、実装がまずいじゃないの?
757デフォルトの名無しさん:2013/07/08(月) 20:05:36.29
連投荒らしか
758デフォルトの名無しさん:2013/07/08(月) 20:53:34.43
>>754
>うちの会社のとある24時間システム

Qはロートルニートなんじゃね?
759デフォルトの名無しさん:2013/07/08(月) 20:58:33.70
保証値がない、または形骸化しているものは、
ただ使うだけで自分もろとも信用失墜する絶叫カーでしかないってことさ
760デフォルトの名無しさん:2013/07/08(月) 21:53:51.48
>>754
まあ、JAVA VM の実装がちゃんとしててメモリーリークがないとしても、そのシステムの実装がタコでメモリー確保しまくってたら、そりゃ落ちるわな。
761デフォルトの名無しさん:2013/07/08(月) 23:09:37.46
JAVAのプログラムでやたらメモリを喰うものを見かけるが、明示的に解放する
必要がないからといってそういうところ無頓着なマが書いてんだろうな。
762デフォルトの名無しさん:2013/07/09(火) 00:35:08.00
javaに対して、メモリリークがないとか、アプリエラーがないとか思ってるなら
まずはその幻想をぶち壊す
763デフォルトの名無しさん:2013/07/09(火) 01:03:19.19
まあ話が果てしなく脱線しているのを無理やり元に戻してまとめ:

Cは時代遅れ
764デフォルトの名無しさん:2013/07/09(火) 03:04:02.51
>>762
壊すじゃなくて殺すだねそれ
765デフォルトの名無しさん:2013/07/09(火) 05:20:55.10
「幻想をぶち殺す」
というのは幻想を擬人化した表現であり
文学板ならまだしもム板ではただの基地害
766 ◆QZaw55cn4c :2013/07/09(火) 05:28:45.96
最近は「ぶち殺す」っていうのか?小泉さんが言ってたのはたしか「ぶち壊す」だったか「ぶっ潰す」だったか
767デフォルトの名無しさん:2013/07/09(火) 07:38:23.88
<string.h>の
strncat

strnはstringだと思う
catって何からきてるんですか?
768デフォルトの名無しさん:2013/07/09(火) 07:43:59.31
catinate
769デフォルトの名無しさん:2013/07/09(火) 07:45:23.67
strはstringだけどnは違うだろw
770デフォルトの名無しさん:2013/07/09(火) 08:36:07.19
Free!
771デフォルトの名無しさん:2013/07/09(火) 08:43:19.48
strcatを知らない世代か…
772デフォルトの名無しさん:2013/07/09(火) 08:56:44.24
straycats、迷い猫オーバーラン!ですね?
わかります。
773 ◆QZaw55cn4c :2013/07/09(火) 08:58:21.39
voidcat, ヘミ猫オーバーランですね!わかります
774デフォルトの名無しさん:2013/07/09(火) 09:35:01.80
linuxのlib/string.cにあった関数ですが、
int memcmp(const void *cs, const void *ct, size_t count)
{
const unsigned char *su1, *su2;
int res = 0;

for (su1 = cs, su2 = ct; 0 < count; ++su1, ++su2, count--)
if ((res = *su1 - *su2) != 0)
break;
return res;
}

(res = *su1 - *su2) != 0
この部分は
*su1 != *su2
ではいけないんでしょうか?
775デフォルトの名無しさん:2013/07/09(火) 09:43:55.21
>>774
いいでしょ。これで。
for (...)
{
 if (*su1 != *su2)
 {
  break;
 }
}
return *su1 - *su2;
776デフォルトの名無しさん:2013/07/09(火) 09:52:59.76
>>774
memcmp()のリターン値は、
cs > ct → 正
cs < ct → 負
cs = ct → 0
だから。
777デフォルトの名無しさん:2013/07/09(火) 09:59:59.64
>>774
(res = *su1 - *su2) != 0 だと算術演算をしてその結果のフラグレジスタをそのまま
参照できるから速くなるのかな?

>>775 だと引き算の結果を有効に活用しないで、別に比較命令を実行しなくてはいけない。

最適化がかかれば関係ないかもしれんけど。
778デフォルトの名無しさん:2013/07/09(火) 10:09:28.52
resを求めたいのでついでにifにも使ってるんだろ
779デフォルトの名無しさん:2013/07/09(火) 10:11:32.26
char[] と char の文字列連結ってどうすればいいのん?

strcatだと連結ソースの型が違うよーって怒られるデス!
780デフォルトの名無しさん:2013/07/09(火) 10:18:13.97
どうしてもC言語つかわなきゃいけない人は自力でなんとかしろ。仕事のためだったら続けられない。
C言語でなくてもいいんだったらC++のstringで、a+bで連結できる。
781デフォルトの名無しさん:2013/07/09(火) 10:18:16.76
>>779
char str[100] = "abc";
char ch = 'x';

len = strlen(str);
str[len] = ch;
str[len + 1] = 0;
782デフォルトの名無しさん:2013/07/09(火) 10:39:21.37
>>780
わからないと格好つけて言ったらそうなるのか。
783デフォルトの名無しさん:2013/07/09(火) 10:40:56.27
>>777
0との比較なので
引き算 + 条件ジャンプ
比較演算 + 条件ジャンプ
CPUへの負荷は同じということなのですね
勉強になりました
784デフォルトの名無しさん:2013/07/09(火) 11:10:31.42
>>779
strlcat(dst, sizeof(dst), &c, 1);
785デフォルトの名無しさん:2013/07/09(火) 13:41:33.80
>>781,784
ありあと!
786デフォルトの名無しさん:2013/07/09(火) 13:54:19.34
>>775
それcount==0のときaccess violation
787デフォルトの名無しさん:2013/07/09(火) 14:51:13.14
>>786
だから何だバーカ。
788デフォルトの名無しさん:2013/07/09(火) 14:53:32.20
議論してるときに枝葉でガタガタ言ってくるやついると冷める。
789デフォルトの名無しさん:2013/07/09(火) 14:54:43.96
そもそもコンパイルできねえしな。
790デフォルトの名無しさん:2013/07/09(火) 14:59:25.96
細かいところに気付く目ざとい俺カッコいいとでも思ってんだろ。ただのアスペだよ。
791デフォルトの名無しさん:2013/07/09(火) 15:12:29.74
どちらかというと枝葉で議論してるんだけどね
792デフォルトの名無しさん:2013/07/09(火) 15:47:04.66
全然枝葉じゃないし。
よっぽど悔しかったか?
793デフォルトの名無しさん:2013/07/09(火) 15:58:29.62
>>792
*su1 != *su2
ではいけないのかって話ですが?
794デフォルトの名無しさん:2013/07/09(火) 16:01:15.99
access violation起こすなら致命的ではないのか
795デフォルトの名無しさん:2013/07/09(火) 16:08:54.01
>>793
>>775のコードに問題があるかどうかだが。
796デフォルトの名無しさん:2013/07/09(火) 16:33:54.02
一つの配列で最大何個要素作れますか?
疑問です。
797デフォルトの名無しさん:2013/07/09(火) 16:40:03.23
ページプリンタのファームで使用していたコンパイラで、
要素数に255個という制限があった。悲しかった。
798デフォルトの名無しさん:2013/07/09(火) 16:41:59.27
>>790
いやエッジケースくらい常に考えろよww
定数倍の速度より遥かに重要
799デフォルトの名無しさん:2013/07/09(火) 16:54:07.78
>>797
いやint x[N];
Nの最大値はどのくらいですか?
800デフォルトの名無しさん:2013/07/09(火) 17:15:45.95
>>795
でしょ。あんたが言ってるのはそれ、だから俺とあんたは違う話をしてるよね。
801デフォルトの名無しさん:2013/07/09(火) 17:25:09.73
>>798
揚げ足取りして何が楽しいのかね。
まともな教育受けてないんじゃないかね。
802デフォルトの名無しさん:2013/07/09(火) 17:38:48.33
一致不一致だけ知りたいのか、大小同じの比較をしたいのかという話だろ?
straycatsは迷い猫オーバーラン!を起こすけど、
それの対策用のstrayncats関数は無いからな。
803デフォルトの名無しさん:2013/07/09(火) 17:42:21.33
>>802
count==0の話だが?
804デフォルトの名無しさん:2013/07/09(火) 17:43:00.39
805デフォルトの名無しさん:2013/07/09(火) 17:50:09.44
>>801
やおい
806デフォルトの名無しさん:2013/07/09(火) 18:00:57.64
最近C言語でオブジェクト指向プログラミングの練習を始めた者です
ある構造体Boxに中の変数Countがあるのですが、その値を見る関数GetCountを関数ポインタを使ってメンバ関数的に割り当てようとしています

//include省略

typedef struct Box{
int count;
int (*GetCount)(struct Box *);
} Box_t;

int Box_GetCount(Box_t* p_box){
return p_box->count;
}

Box_t* Box_New(int num){
Box_t* p_box = (Box_t *)malloc( sizeof(Box_t) );
p_box->count = num;
p_box->GetCount = &Box_GetCount;
return p_box;
}

int main()
{
Box_t* box1 = Box_New(5);
printf("%d", box1->GetCount(box1));
free(box1);
return 0;
}

このやり方ですと、構造体Boxのメンバ関数GetCount(外部関数Box_GetCountのポインタ)でメンバ変数countを読む時に
box1->GetCount(box1) と自身のポインタを渡すようになっているのですが、これをbox1->GetCount()のように引数なしでできるでしょうか?
構造体内の宣言を変えればいいのか、関数Box_Newの中身を変えればいいのか悩んでおります。ご教授頂けると幸いです
807デフォルトの名無しさん:2013/07/09(火) 18:17:53.53
>>806
ムリ。
C++使ったほうがいい。
808デフォルトの名無しさん:2013/07/09(火) 18:18:45.90
>>806
できない
個人的にはbox1->GetCount(box1)にするくらいなら、Box_GetCount(box1)とかにすればと思う
809デフォルトの名無しさん:2013/07/09(火) 18:24:26.06
>>806
これだと多態はできても、抽象型プログラミングみたいのができないからあんまりうれしくないね。
Cでやるなら >>808 みたいにしてカプセル化くらいでいいと思うわ。
810デフォルトの名無しさん:2013/07/09(火) 18:31:53.87
void func(char *ary[]);

このような引数を持つ関数を呼び出す時の作法がわかりません
以下の二つの方法は試しましたがどちらもNGでした

char ary[5][10] = {0};
// ここでary に入れる処理 (strcpy(ary[0], "abc");等)
func(ary); // 型エラー

char *ary[10] = {0};
// ここでary に入れる処理(strcpy(ary[0], "abc");等)
func(ary); // 通るけどaryの中身がおかしい

どなたかよろしくお願いします。
811デフォルトの名無しさん:2013/07/09(火) 18:41:27.32
詳しくないか忘れたけど。
c言語 関数 引数 配列 型 サイズ
で検索したらいいんでは。
812810:2013/07/09(火) 18:45:45.56
それらしいワードで検索しても探す事は出来ませんでした
どなたかよろしくお願いします
813デフォルトの名無しさん:2013/07/09(火) 18:47:47.14
>>810
こういうこと?

char array[10] = "abcde";
func(&array);
814811:2013/07/09(火) 18:48:09.52
引数がchar*型の配列ってことで、渡す前にメモリ確保していなければ
エラーになるんだろう。
815810:2013/07/09(火) 18:50:58.05
>>813
いえ、これだと型が違うのでエラーになってしまいます

>>814
そうですね
なので char ary[5][10] = {0}; のように変数を用意してメモリ確保
その後にメモリへ目的の値ををコピー
そしてfunc読み出しとしたのですが型が違うと怒られてしまうのです

このようなケースでは具体的にどの様にすればいいのでしょうか?
816811:2013/07/09(火) 18:53:30.29
char ary[5][10] = {0};
これではダメだろう。関数側で書き込む領域まで大きめにメモリ確保しないと。
自分もだが、こういう基礎レベルで迷う場合はC++を使った方がいい。
vector<string>型なら簡単。
817デフォルトの名無しさん:2013/07/09(火) 18:57:34.52
プログラム内にデータファイル保存する事できますか?
exeファイルだけで全てすませたいです。
818810:2013/07/09(火) 18:58:06.56
>>816
申し訳ありませんが C でお願いします

そういえば getopt 等の関数がこのパターンに該当するのでGoogle等で検索してみた、、のですが
どれもmain関数からの呼び出しからのみで参考にならず…
819811:2013/07/09(火) 18:59:10.13
型エラーになるのは多分、関数の引数が配列として2次元以上になる場合、
コンパイラ側がchar[N]型みたいのを生成していて、ちょうどサイズを一致させないと受け付けなくなってる気がした。
820810:2013/07/09(火) 19:15:00.92
検索して見つけた…
malloc等を使う上に環境依存だとは…
今の環境だと確実にメモリ断片化が起きるので動的にメモリ確保は使えない…

malloc が使えない環境だと getopt 等の関数は使えないのかなぁ
821806:2013/07/09(火) 19:18:02.73
>>807-809 無理っぽいですか……やはり下手な内はOOPなら無理せずOOPL使えってことですね
返信ありがとうございました
822デフォルトの名無しさん:2013/07/09(火) 19:18:12.38
アホ同志でワイワイやってるのが楽しいんだろうから判ってるヤツは茶々入れちゃダメだよ
823デフォルトの名無しさん:2013/07/09(火) 19:22:16.48
>>820
組み込み?
ならその手の物は使えないよ
824 ◆QZaw55cn4c :2013/07/09(火) 19:27:20.80
825810:2013/07/09(火) 19:30:58.01
>>823
メモリにかなり制限がある環境でそれに近いと思います

>>824
なるほどー
staticで確保してそこを挿すようにすればよかったのですね
おかげさまで解決しました
ありがとう
826811:2013/07/09(火) 19:41:59.45
なんか勘違いしてた。配列は変数宣言したと同時に指定サイズ分だけメモリ確保されるんだったな。
それは別にしてあれこれ動かしてみた結果、サイズを別に渡すのがうまくいくと思った。


#include <stdio.h>

void func(char *ary, int size) {
printf("%s\n", &ary[0]);
printf("%s\n", &ary[size]);
strcpy(&ary[size],"22222");
}


int main() {
char ary[2][10] = {"000000000","111111111"};
func(ary, sizeof(ary[0]));
printf("%s\n", ary[1]);
return 0;
}
827デフォルトの名無しさん:2013/07/09(火) 19:47:00.81
「こんな基礎もわかんねぇの(プッ」っと思ったけど>>824みて基礎レベルじゃねぇとやっと気付いた俺ガイル
828811:2013/07/09(火) 19:48:48.16
>>826はポインタの方を無視してた。
829811:2013/07/09(火) 19:56:25.59
>>824は、配列をポインタへ移し替えて
関数コールしてるだけだろ。
これでいいのか?
830811:2013/07/09(火) 20:18:44.29
関数へ2次元配列を渡した時に、
ポインタと配列でアクセス方法が変わってしまう事と、
ポインタの時、データが連続している保証がない事で困る。
ポインタと配列をどちらも入力できるようにするのは諦めるべきでは?
ポインタの時、配列のようにデータが繋がっているとしたら、これで共通のアクセス可能だが。


#include <stdio.h>

void func(char *ary) {
strcpy(&ary[0],"22222");
strcpy(&ary[10],"33333333");
}



int main() {
char ary[2][10] = {"000000000","111111111"};
char* bry[2] = {"000000000","111111111"};
//func(ary); func(bry);
func(&ary[0][0]); func(&bry[0][0]);
printf("%s %s\n", ary[0], bry[0]);
printf("%s %s\n", ary[1], bry[1]);
return 0; }
831デフォルトの名無しさん:2013/07/09(火) 20:24:56.84
>>824
メモリ制限がある環境でstaticはないだろと思ったけど、malloc/freeで断片化するような頻度での呼び出しでは有りか。
832 ◆QZaw55cn4c :2013/07/09(火) 20:27:12.30
>>829
そもそも int a[][] と int *a[] とはまったく別物と決めてかかったほうがいい、それでみんな楽になる
833デフォルトの名無しさん:2013/07/09(火) 21:18:57.27
>>826
ここはてめーの学習帳じゃねーんだよゴミ
ゴミってポインタ以前に本当に頭わりーな
834デフォルトの名無しさん:2013/07/09(火) 21:24:56.38
初心者にえばり散らす奴は最低
835デフォルトの名無しさん:2013/07/09(火) 21:27:17.00
ポインタと配列の違いがよく分かってないんだろうな
今ならHeadFirstCで分かりやすく解説してあるから立ち読みしてくるといい
836デフォルトの名無しさん:2013/07/09(火) 21:40:03.74
【訃報】共有ソフト「Winny(ウィニー)」開発者の金子勇さん 急性心筋梗塞で死去 42歳[13/07/07]
http://anago.2ch.net/test/read.cgi/bizplus/1373207268/
837片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/09(火) 22:01:28.48
>>817
リソースファイル
838デフォルトの名無しさん:2013/07/09(火) 23:06:08.49
>>837
ブログのアクセス数どのくらい?
何か面白いプログラム作ってよ
839デフォルトの名無しさん:2013/07/09(火) 23:14:28.08
>>837
ありがとう。
visual studioでそのファイル見つけました。
便利ですね。
840toya:2013/07/09(火) 23:24:42.64
WikibooksのC言語の教科書が、標準ライブラリのページ以外は、一応完成した。
加筆修正、標準ライブラリの執筆してくれる方求む。
http://ja.wikibooks.org/wiki/C%E8%A8%80%E8%AA%9E
841デフォルトの名無しさん:2013/07/09(火) 23:56:15.21
>>840
おつかれ。
842デフォルトの名無しさん:2013/07/09(火) 23:59:32.36
入門レベルならその内容でいいと思うけど
応用Cとかいう題名でCの応用的な事を系統立てて学びたいどんな
プログラムにすればいいだろうか?

1章 
2章
843デフォルトの名無しさん:2013/07/10(水) 01:11:20.91
>>840
ここは執筆活動報告スレではない
他人に迷惑をかけないよう直ちに回線を切れ
844デフォルトの名無しさん:2013/07/10(水) 01:16:55.61
>>840
意義がある活動されてますね。
こういうのがあるの、初めて知りました。
845 ◆QZaw55cn4c :2013/07/10(水) 01:20:16.74
>>831
メモリ制限とは関係ないのでは?static な領域は計算可能だから必要な分だけ .data に確保されて問題ない。
static をつけずにスタックに配列(というおおげさなもの)を置くという方が、むしろ制限を意識する。
というか、配列を初期化するときには static をつけたくなるんだね、C89 が気になって、もうやめたいけどね。
846デフォルトの名無しさん:2013/07/10(水) 01:21:41.54
staticはヒープ領域じゃないの・・・・また恥を晒すのか?
847 ◆QZaw55cn4c :2013/07/10(水) 01:33:03.81
>>846
static はヒープじゃない、とは一言もいっていないが?
ただ、スタックはデフォルトのままでは「実行させるまで足りなくなることがわからない」けれども、static なら確保できなければコンパイルの時点ではねられるだろう?
配列をスタックに置くのはどーかと思うよ。

>>824
をみるかぎり static な領域のほうが制限がきつい、と思っているようだけれども、その判断は疑問だね。
848 ◆QZaw55cn4c :2013/07/10(水) 01:34:37.10
失礼
>>831 は static な領域のほうが制限がきつい、と思っているようだけれども、その判断は疑問だね。
849デフォルトの名無しさん:2013/07/10(水) 01:37:34.91
ヒープって、実行時に動的に割り当てる領域じゃなかった?
850デフォルトの名無しさん:2013/07/10(水) 01:38:50.51
staticな変数も起動時に割り当てられるよ
つーかQは頭大丈夫か?
851デフォルトの名無しさん:2013/07/10(水) 01:51:15.36
スタックに置いたら、プログラムサイズをlsで調べられなくなるじゃないですかー!!
852デフォルトの名無しさん:2013/07/10(水) 01:54:21.39
http://www.ibe.kagoshima-u.ac.jp/edu/gengo0/p8_1.gif

↑ これ、間違っているか?
853 ◆QZaw55cn4c :2013/07/10(水) 01:56:16.38
>>850
初期化しない分はたしかにそうだね
でも、初期化する分は、普通は、リンク前にすでに組み込まれているんじゃないの?

>>849
コード領域、スタック領域以外をヒープと呼ぶ人もいるようだ(昔なら DS セグメントレジスタでアクセスする分を全部ヒープといっていたようだね)。それに異論を唱えるつもりはない。

static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?malloc() 失敗時にちまちま書くのが面倒なときは、えいや、と static にするね、配列なんか特にね。
854 ◆QZaw55cn4c :2013/07/10(水) 01:58:14.32
>>852
メモリ配置は環境によるね、その図の場合もあるし、ヒープとスタックが逆の場合もあるよ。静的領域(.data と .bss)は普通はコードの後ろに置くようだけれどもね。
855デフォルトの名無しさん:2013/07/10(水) 02:12:30.21
>>853
初期化する分もコード内に持っていて、プログラム起動時にヒープ領域にコピーされる
856デフォルトの名無しさん:2013/07/10(水) 02:16:29.52
>>853
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?

それは違う。メモリを割り当てるのはあくまでプログラム実行時(ロード時)。
857デフォルトの名無しさん:2013/07/10(水) 02:17:40.35
あーまたQzの馬鹿講義が始まったよ(ノ∀`)アチャー
858 ◆QZaw55cn4c :2013/07/10(水) 02:20:35.27
>>855
ふむ。.text, .rdata, .data 各セクションの実行時における配置にすきまがある環境もあるんだね、意識したことはないけど
でも「確保できないのならコンパイル&リンク時点ではねられる」という点はどうであれ同じだと思うだけれども?
コンパイルできたコードが実行時(プログラムロード時)にはねられることもあるの?
859デフォルトの名無しさん:2013/07/10(水) 02:22:38.64
>>858
クロス開発環境って知ってる?
860デフォルトの名無しさん:2013/07/10(水) 02:29:41.39
>>858
実行時のメモリ不足なんてコンパイル時に分かるわけないだろう
861デフォルトの名無しさん:2013/07/10(水) 02:31:43.47
どうやったらこんなアホ人間が出来上がるのやら

アホはアホらしく大人しくしていればいいものを
862デフォルトの名無しさん:2013/07/10(水) 02:34:16.17
link時にわかることもある
863デフォルトの名無しさん:2013/07/10(水) 02:35:37.81
>>861
もしかして自分の馬鹿さ加減を人に指摘されて喜ぶ究極のマゾなんじゃねw
864デフォルトの名無しさん:2013/07/10(水) 02:39:01.27
ちょっと分かりやすく補足してみる。

巨大なstaticな領域を取ったときに、exeファイルとしてNGとか、elfファイルとしてNGとかの
実行ファイル形式にならない場合はコンパイル時にエラーになる。

でもそうならなかったら、実行時にエラーしないとは言えない。
なぜならメモリにロードするのはあくまで実行時だから、実行時に十分なリソースが
なければロードできない。

あとOSによっては仮想アドレス空間は確保しても物理的に確保しない場合もあるから
実行開始したあとにエラーが出る可能性もある。
865 ◆QZaw55cn4c :2013/07/10(水) 02:40:47.96
>>859
厳密な意味ではやったことはない。同じアーキテクチャでコンパイルと実行を別の環境としたことはあるが

>>859 >>860
なんだかだんだん特殊な状況にはいってきたね、MS-DOS で FEP だのどーでもいい辞書だの TSR だのをバンバン載せた情況で MS-C がきどーしないとか‥‥‥

はじめの話はなんだったの?スタックに配列を載せるのと static に配列を載せるのとどっちが適切か、あるいは使い分けはどこにあるか?じゃなかったの?
866 ◆QZaw55cn4c :2013/07/10(水) 02:43:16.58
>>864
>物理的に確保しない場合もあるから実行開始したあとにエラーが出る可能性もある。
malloc() で OK が出てもそれを信用してはいけない、という話はよく耳にするね、でも、それって static な領域にも当てはまるものなのか‥‥‥
巨大な配列は、static に置こうが stack に置こうがあんまりかわらない、というのもなんだかねえ‥‥
867 ◆QZaw55cn4c :2013/07/10(水) 02:51:56.96
>>863
炎上学習法‥‥
868デフォルトの名無しさん:2013/07/10(水) 08:02:14.54
>>862
だよね〜

ROM で動作する環境もあるから、実行時でないと〜 とか言ってる奴はちょっと知識が足りない。
869デフォルトの名無しさん:2013/07/10(水) 08:16:29.33
staticを付けたほうがコンパイル時にメモリを多く確保する傾向がある。
870デフォルトの名無しさん:2013/07/10(水) 08:21:13.71
コンパイル時にauto変数 + static変数の領域を固定サイズで決定しているはずで
巨大なauto変数が生成されるとサイズがあふれて実行時に止まることはあるだろ?
871デフォルトの名無しさん:2013/07/10(水) 08:43:04.29
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
>>static な領域は、確保できないのならコンパイル&リンク時点ではねられるだろう?
自覚してないバカは始末が悪いな。
バカのくせに見栄だけは一人前で特殊な状況と言い逃れようとしてるのが笑える。
872デフォルトの名無しさん:2013/07/10(水) 10:59:51.55
スタックは拡張できない場合もあるので、巨大な配列をスタックに
置くことは普通しない。しかしサイズを気にするならば、

>>824
> static char a[N][10] = {{0}};
こんな間抜けな事もしない。 WWWW
不要になった後その領域を再利用できない、データ領域では足りない場合がある。
からだ。 WWWW
873デフォルトの名無しさん:2013/07/10(水) 12:06:50.40
この場合、再利用しなくていいし、足りているからそうしてんだろw
874デフォルトの名無しさん:2013/07/10(水) 15:02:48.42
この場合に限定するのならstaticにする必要はない。
875デフォルトの名無しさん:2013/07/10(水) 15:35:09.71
Win32に決め打ちのリンカならstaticで2GBや3GBになるとエラー吐く事はあるけどな
一般にはそういうのは無視してリンクしてしまう
876デフォルトの名無しさん:2013/07/10(水) 16:04:21.19
細かいこと気にしてるとハゲるぞ
877デフォルトの名無しさん:2013/07/10(水) 18:06:11.69
ファイル探す時、ディレクトリツリーを辿るのが凄い面倒臭いんですが
どうしたらいいですか?お絵描きして遊んだ後に、Cやろうとしてファイル
探そうとしたらお絵描きフォルダがまず最初に開くので、Cのファイルまで
辿らないといけないので凄い面倒臭いです。
878デフォルトの名無しさん:2013/07/10(水) 18:11:44.67
>>877
よく開くフォルダはデスクトップにショートカットでも置いとけばいいじゃん。
879デフォルトの名無しさん:2013/07/10(水) 18:27:28.17
>>878
そんな事できるんですか...
初めて知りました。
後かなり困ってるんですがアプリケーションの関連付けを変えるにはどうしたらいいですか?
VC++ダウンロードしてからアイコンが全部VC++に変わりました。
メモ帳で開きたいのですが....
880デフォルトの名無しさん:2013/07/10(水) 18:32:54.15
僕もVCダウンロードしたのですがシリアルがわかりません><
881デフォルトの名無しさん:2013/07/10(水) 18:39:08.29
>>879
windows板いけ
882 ◆QZaw55cn4c :2013/07/10(水) 18:57:41.30
>>872
おひさしぶり。

>>872, 874
配列の0初期化を明示したかったから static をつけただけです、もっとも static つければ 必然として 零初期化されるし、この場合は意味がないようですね
自動変数の配列でも初期化できるようになったのはいつからだったっけ
883デフォルトの名無しさん:2013/07/10(水) 19:03:05.68
>>872
>データ領域では足りない場合がある。
いまどきのフラットなメモリ空間ではそんなこともないだろうに?もしかして 64KB の壁のことをいってるの?
884デフォルトの名無しさん:2013/07/10(水) 19:29:08.07
> 配列の0初期化を明示したかったから static をつけただけです
直後にforで初期化してるのに 意味ねー WWWW
配列は初期化するというのならbが初期化されてねー 一貫性ねー WWWW
そして、アルツハイマーの兆候 WWWW
>> 845 static をつけずにスタックに配列(というおおげさなもの)を置くという方が、むしろ制限を意識する。
>> 847 配列をスタックに置くのはどーかと思うよ。

>>883
バカにはわからない。 WWWW
885デフォルトの名無しさん:2013/07/10(水) 19:33:34.57
>>871
あまりに巨大な領域に初期値も指定すれば
コンパイル&リンク時に死ぬ事もあるとは思う
が、基本は実行時だよな
886デフォルトの名無しさん:2013/07/10(水) 19:36:58.03
そっかーbss は実行時だねえ
887デフォルトの名無しさん:2013/07/11(木) 00:39:31.77
visualC++2010でデバックすると決まって

'stdio.h': No such file or directory

というエラーがでます。部活の先輩にもらったサンプルプログラムなので構文エラーではないです。
このエラーはどういった方法で直すことができるでしょうか?
888デフォルトの名無しさん:2013/07/11(木) 01:38:54.54
低学歴、かまってちゃん
889デフォルトの名無しさん:2013/07/11(木) 01:45:25.86
標準ライブラリってデフォルトでコンパイラに入ってなかったけ?
890デフォルトの名無しさん:2013/07/11(木) 01:58:59.18
>>889
そのはずなんですが何故かできないんですよね?

なにか初期設定のようなものが必要なんでしょうか?
891デフォルトの名無しさん:2013/07/11(木) 03:07:13.73
>>889
ヴァカに構うな
お前だけならまだしも他も迷惑する
892デフォルトの名無しさん:2013/07/11(木) 03:13:42.07
嫌がらせで全角が混じってる予感
893デフォルトの名無しさん:2013/07/11(木) 06:15:52.70
bss領域にリミッターが設定されてないとか?
894デフォルトの名無しさん:2013/07/11(木) 06:18:44.55
スタックに確保される領域は実行時でないとわからんけどね
関数のネストしだい?
895デフォルトの名無しさん:2013/07/11(木) 07:00:37.48
>>894
再帰使ってるとわからない。
再帰使ってないなら、最大値を計算することは可能で、そう言うツールもある。

あと .bss とか .data とかの大きさを指定できて、越えるとリンク時にエラーにするものは、組み込みだと珍しくない。
896デフォルトの名無しさん:2013/07/11(木) 07:20:58.70
再起があってもなくてもスタックサイズはコンパイル時に確定してるだろ?
深い再起で落ちるのはメモリ不足になるためだろ。
897デフォルトの名無しさん:2013/07/11(木) 07:25:39.93
C/C++ でプログラムをしているとつい忘れてしまうのがスレッドのスタックオーバーフローの問題。
最近の OS はスレッド当たり 2〜8MB のスタック領域を持っているため、よほどのことがない限りスタックが溢れてしまうことはない。
だが、再帰や alloca を積極的に使うようなプログラムではスタックオーバーフローを気にすべきだ。
http://www.nminoru.jp/~nminoru/programming/stackoverflow_handling.html


/F (スタック サイズの設定) (C++)
このオプションを指定しない場合、スタック サイズは既定で 1 MB に設定されます。
http://msdn.microsoft.com/ja-jp/library/tdkhxaks(v=vs.80).aspx
898デフォルトの名無しさん:2013/07/11(木) 10:30:02.21
>>896
反証 alloca
899デフォルトの名無しさん:2013/07/11(木) 11:00:10.27
ここでスタックのサイズって言ってるのは、スタックの消費量のことでしょ?
alloca()使わなくても、再帰がある時点でコンパイル時には不明なんじゃないの?
900デフォルトの名無しさん:2013/07/11(木) 12:17:57.30
staticで初期値書かなかったら0になるのは、何の仕様?
901デフォルトの名無しさん:2013/07/11(木) 12:43:38.61
それは規格です。
902デフォルトの名無しさん:2013/07/11(木) 15:39:44.15
構造体型配列と、memmove関数について質問があります。
以下のような構造体型の配列をmemmove関数でコピーするとき、
コピーを始める位置の指定((name + 1)の部分)は、下のようにしても問題ないのでしょうか?

#include <stdio.h>
#include <string.h>

typedef struct {
 char first[4], last[4];
} NAMESET;

int main(void) {
 NAMESET name[4] = {{"aaa","bbb"},{"ccc","ddd"},{"eee","fff"},{"ggg","hhh"},};
 NAMESET temp[4] = {};

 memmove(temp, name + 1, sizeof(NAMESET) * 2);

 printf("%s %s\n", temp[0].first, temp[0].last);
 printf("%s %s",  temp[1].first, temp[1].last);
 return 0;
}
結果:
ccc ddd
eee fff
903デフォルトの名無しさん:2013/07/11(木) 15:42:57.97
>>902
問題ないよ。
904902:2013/07/11(木) 16:03:27.40
>>903 返信ありがとうございます。
これと
memmove(temp, name + 1, sizeof(NAMESET) * 2);
これは
memmove(temp, &name[1], sizeof(NAMESET) * 2);
等価であると考えて大丈夫ですか?
後出しで申し訳ありません。
905デフォルトの名無しさん:2013/07/11(木) 16:15:01.07
>>904
同じ。

*(name + 1) と name[1] は同じ。
906デフォルトの名無しさん:2013/07/11(木) 16:18:43.32
>>903, >>905
すっきりしました。ありがとうございました。
907デフォルトの名無しさん:2013/07/11(木) 17:22:05.54
スタックとヒープがいつもどっちがどっちか分からなくなります(辞書的な意味で)
どうしたらいいでしょうか?
ポストイットに書いてディスプレイに貼るのはダサいので他の方法でお願いします
908デフォルトの名無しさん:2013/07/11(木) 17:28:48.82
ヒープ 動的に確保する器
スタック おおよそ後入れ先出しする器

スタックの実装段階でヒープを利用する ということも有り得る話
909デフォルトの名無しさん:2013/07/11(木) 17:39:57.49
「stack もクソもない山盛り heap」と覚えればいいと思うよ
910デフォルトの名無しさん:2013/07/11(木) 17:44:48.45
push,popって配列の0での作業なの?
それともstrlen-1での作業?
これが未だに分らない。
911 ◆QZaw55cn4c :2013/07/11(木) 19:23:08.84
>>910
ヒント:i8086 とかではスタックポインタ(のオフセット)を 0 で初期化するのが普通です
912デフォルトの名無しさん:2013/07/11(木) 19:33:19.53
スタック(LIFO)はアドレス操作をカプセル化したデータ構造なので、
伸びる方向が上方(順方向)でも下方(逆方向)でも好きな方で実装すればいい。
CPUスタックは下方伸長のものが多い。
913デフォルトの名無しさん:2013/07/11(木) 20:12:11.10
a
914デフォルトの名無しさん:2013/07/11(木) 20:18:13.75
当方 物理学科で趣味でプログラミングを趣味でやり始めたんだけど問題発生 一定の数の質点が相互作用しているプログラミングを作ってる最中なんだが
何故か全ての質点が互いに相互作用じゃなくて一個の質点とそれ以外の質点が相互作用するプログラムになっちゃった。
プログラムは全然分からんから教えて欲しいんだけどここで聞いていい?
915デフォルトの名無しさん:2013/07/11(木) 20:20:26.28
>>914
まずソースコードを貼れ、つ http://codepad.org/
ルンゲクッタは何次のを使ってる?
916デフォルトの名無しさん:2013/07/11(木) 20:24:50.84
>>914
>趣味でプログラミングを
>趣味でやり始めた

何でそんなに趣味であることをそんなに強調してんのコイツ
917デフォルトの名無しさん:2013/07/11(木) 20:27:46.10
ピタゴラス三体問題は誤差をなくすのに大変なんで勘弁
918デフォルトの名無しさん:2013/07/11(木) 20:31:56.30
>>915
//codepad.org/vawU35Ji
ルンゲクッタは4次です プログラミングについてはまったく無知なんでおかしいと思うけど。。
919デフォルトの名無しさん:2013/07/11(木) 20:34:30.10
>>916
ミスった
920 ◆QZaw55cn4c :2013/07/11(木) 21:14:24.98
>>914
>一個の質点とそれ以外の質点が相互作用するプログラムになっちゃった。
しか読んでない。

if (i==j)
Fx[i]+=0;
else
Fx[i]+=(a/dis[i][j])*res_x[i][j];

Fy も同じ処理で
こうするとどうなる?
921デフォルトの名無しさん:2013/07/11(木) 21:15:20.20
物理に使える数値計算、数式処理ソフトを使え。
ZEROから制作は馬鹿げてる。
922デフォルトの名無しさん:2013/07/11(木) 21:31:36.59
フリーの数値計算、数式処理ソフト

R言語 Octave Scilab Maxima Python(x,y)
923デフォルトの名無しさん:2013/07/11(木) 21:35:12.71
>>920
ありがとう というか自分のアホさかげんに呆れている 当たり前の事に気付かなかった
>>921
粒子法を開発した先生の本でc使ってたから俺もやり始めたんだけど他にいい方法があるのか
924デフォルトの名無しさん:2013/07/11(木) 21:40:00.12
925デフォルトの名無しさん:2013/07/11(木) 21:45:36.03
実用上、フォートランやC言語は、計算速度不足のとき最終的に使えばいい。
とりあえず容易に計算でき、結果が出せたらいいだろう。
926デフォルトの名無しさん:2013/07/11(木) 22:02:59.99
太陽系の惑星とそれぞれの衛星も含めた全ての軌道を同時にシミュレーションしたいんですけど、どうしたらいいですか?
水星が木星の重力の影響を受けて楕円軌道が大きくなっていて、将来水星が太陽にぶつかって飲み込まれるかもしれないときいたので、
水星がなくなった場合の太陽系の他の惑星の軌道への影響を調べたり、
また水星以外にもそうした変化が起こっていないかなど調べたいのです
927デフォルトの名無しさん:2013/07/11(木) 22:08:02.44
数学板とか天文板とかに行った方がいいんじゃないか
928デフォルトの名無しさん:2013/07/11(木) 22:11:30.70
Rで多体問題を数値解析
古典物理学と言えばニュートンの運動方程式で、何かの軌道をプロットするのが定番です。
二個や三個であればPC上のRで計算できるので、試しにやってみましょう。
http://d.hatena.ne.jp/uncorrelated/20130618/1371565502


偏微分方程式の差分解法と Scilab を用いた数値計算
これは,2013年1月 (23,26,29,30,31日) に中央大学で行われた
集中講義・応用解析学 2(理工学部数学科),応用解析特別講義第二 (理工学研究科数学専攻) の講義テキストです.
http://www.infsup.jp/saito/modules/mydownloads/visit.php?cid=1&lid=18

微分方程式の数値計算: ポチの電子回路論
http://ee-by-pochi.sblo.jp/article/57772181.html

Sympy : Python での記号計算
http://www.ike-dyn.ritsumei.ac.jp/~uchida/scipy-lecture-notes/advanced/sympy.html

Pythonの数式処理ライブラリ SymPy で遊んでみる
http://note.chiebukuro.yahoo.co.jp/detail/n145429

Octaveで遊ぶ数値解析入門
http://members2.jcom.home.ne.jp/keiko0/octavenumerical.pdf

Scipyで常微分方程式を解く
http://oceansciencehack.blogspot.jp/2010_08_01_archive.html

Maxima  常微分方程式
http://phys.hirosaki-u.ac.jp/wiki.cgi/maxima?page=%CA%FD%C4%F8%BC%B0

Maxima で数学を 多機能ぶり
http://ayapin-film.sakura.ne.jp/LJ/Docs/34th.pdf
929デフォルトの名無しさん:2013/07/11(木) 22:14:12.12
マジで多体問題やるつもりか
論文にしろよ
930デフォルトの名無しさん:2013/07/11(木) 22:40:55.99
>>896
確保する容量のことなら Windows は CreateThread( ) でスレッド作成時に指定できる
使う量のことなら、alloca( ) とか再帰で確定しない

要するに、実行するまでわからん場合があるということだ
931デフォルトの名無しさん:2013/07/11(木) 22:45:18.69
多体問題って今日はじめて知ったが。
N=3でも数値計算しか知られてなかったのが、最近、一般相対論でのN=3の一般解が解けたようだな。
一般相対論で4以上が不可能か証明されてるのか?




弘前大、一般相対論における三体問題の直線解の解析解を導出 2011年2月3日
弘前大学大学院理工学研究科の山田慧生氏と浅田秀樹准教授が、一般相対論における三体問題の直線解を導き、Physical Review 誌に掲載された。
多体問題においては、積分法による一般解の解析解は存在しないとアンリ・ポアンカレによって証明されており、問題解法には摂動や数値解析を用いた計算が従来行われていた。
2007 年に行われた研究会での浅田先生の発表資料 (PDF) によれば、日本天文学会では「三体問題にだけは手を出すな」「相対論にだけは手を出すな」という格言があるほどだったらしい。
http://www.excite.co.jp/News/it_g/20110203/Slashdot_11_02_03_044235.html
932デフォルトの名無しさん:2013/07/11(木) 22:46:10.59
Linux とかだと勝手にスタック延ばしてくれたりしないっけ?
933デフォルトの名無しさん:2013/07/11(木) 22:53:10.16
link時にスタックサイズを指定することである程度は回避出来ます
スタックを消費しすぎて、heap領域とかをぶっ壊すこともあるかな
heap領域を使いすぎて、スタック領域を使えない状態になることも

パソコンとかの富豪プログラム環境ではあんまり関係ないかも
934デフォルトの名無しさん:2013/07/11(木) 22:57:06.44
935914:2013/07/11(木) 23:05:56.79
>>931
一般解は存在しないけど特殊解は存在していてニュートン方程式では知られていたけど
一般相対論では初めて見つかったって事だと思うよ
学部生で一般の解析解見つけるなんてすごいなぁ
936 ◆QZaw55cn4c :2013/07/11(木) 23:09:21.91
ここはCスレなんだが?
937デフォルトの名無しさん:2013/07/11(木) 23:16:24.23
古典力学で解けないことが知られてるのに、相対論的一般化では解けるってのはオカシイと思ったら、特殊の場合の解析解が求まったという話だった。



多体問題 - Wikipedia
多体問題は、互いに相互作用する3体以上からなる系を扱う問題である。
太陽と地球のような二体問題は厳密に解けるが、例えば月の運動も考える一般の三体問題以上になると解析的に解くことはできないとされる。
18世紀にはジョゼフ=ルイ・ラグランジュが研究を深め、19世紀末にアンリ・ポアンカレによって証明された。
ただしポアンカレの証明は積分法の範囲であり、この範囲以外の解法の存在については現在も不明である。


当たり前ですが,三体問題の一般解,と言うわけではなく,一般相対論の範囲で三体問題の直線解(三つの物体が一直線上に乗っている場合限定の解)を解いた,という物です.
http://slashdot.jp/comments.pl?sid=521452&cid=1897426
938デフォルトの名無しさん:2013/07/11(木) 23:23:10.51
カオスなのになあ
よく解けたとしか
939デフォルトの名無しさん:2013/07/12(金) 11:44:14.87
この話題、面白いんですが、C言語に限定したものではないし、
続けるならスレを立ててそちらで継続されたらいかがでしょうか?
940デフォルトの名無しさん:2013/07/12(金) 15:29:29.66
>>939
最終的にCに関わってくるから却下
941デフォルトの名無しさん:2013/07/12(金) 15:49:48.28
まぁPHPでやることはないだろうしなw
942デフォルトの名無しさん:2013/07/12(金) 16:17:26.59
軌道シミュレーションはよく研究されてて、ハードの性能だけの問題かと思ってたらそうでは無いんだな。既知の手法なら表彰されないしな。


第6回(平成21年度)日本学術振興会賞受賞者
「数値的一般相対論の開拓およびその応用」
中性子星やブラックホール形成は、一般相対論的効果が顕著に現れる現象であるが、これらの問題を解くための方程式は大変複雑になる。
柴田大氏は、一般相対論の基礎方程式であるアインシュタイン方程式を数値的に解き、
ブラックホールの形成や重力波放出を伴うような一般相対論的天体現象の理論的解明に多大な貢献をした。
特に、同氏は長時間安定に一般相対論の数値シミュレーションが行える新しい定式化を提案し、実際にその有効性を実証した。
これらは、「数値的一般相対論」と呼ばれる分野の本格的到来を導く記念碑的業績として世界的に高く評価されている。
同氏は、的確な問題設定と独創的な計算手法を駆使して、一般相対論・相対論的宇宙物理の分野において今後も世界をリードしていくことが期待される。
http://www.jsps.go.jp/jsps-prize/ichiran_6th/09_shibata.html
943デフォルトの名無しさん:2013/07/12(金) 17:35:04.58
この程度の脱線ならしょっちゅうあったのに、ついていけないときだけスレチだって喚かれてもw
944デフォルトの名無しさん:2013/07/12(金) 18:53:12.24
>>943
いや、そうじゃなく、このスレに埋もれてしまうより
単独で立てた方が良くないかと
945デフォルトの名無しさん:2013/07/12(金) 19:29:21.80
そんなに面白い話題ならたててくれ。
あと叩き台のコードもアップで。
946デフォルトの名無しさん:2013/07/12(金) 19:39:58.26
太陽系内での軌道計算すら大変そうだし、そこに彗星がやってきたときとかの軌道はどうやって求めてるんだ?
ほんの少しのズレでも、軌道が変わってしまうだろ。
たとえば球形の鉄玉を転がしたとき、磁石に衝突するかしないかは、少しの方向や速度や磁力の違いで変わる。
947デフォルトの名無しさん:2013/07/12(金) 19:43:57.38
どうせスレ立てても30レスくらいまでいったところで放置されるよ
948デフォルトの名無しさん:2013/07/12(金) 20:03:41.43
土星の輪には何故空隙が出来るか、誰かシミュレーションで説明して
949デフォルトの名無しさん:2013/07/12(金) 20:06:16.45
あの輪っかは土星の自転方向と関係あるの?
950デフォルトの名無しさん:2013/07/12(金) 20:32:02.19
「もし、地球に土星の輪があったら」
荒唐無稽な話のようですが、ロシュの限界などの物理的な考察をした上でのシュミレーション・アニメです。
http://www.youtube.com/watch?v=NqQbxV1d9v0
https://ja-jp.facebook.com/Dr.kanjukuamagi/posts/459544510793405

国立天文台、約502TFLOPSのCray製Xeonスパコンを運用開始  
〜計算天文学向けに開放、2014年度には1PFLOPSへアップグレード  2013/5/29
性能を高めた新スパコンの導入により、これまで計算できなかったような大質量の形成や、
土星の輪全体の構造などの計算、時間軸/空間軸の解像度を高めた解析などの実現に期待を寄せている。
http://pc.watch.impress.co.jp/docs/news/20130529_601423.html


高度なN体シミュレーション法 押野翔一 2013/1/23
土星環シミュレーション手法 : local shearing box + リープフロッグ法 + GRAPE-7
http://www.cfca.nao.ac.jp/files/oshino_13_4_0.pdf



土星の環は安定?
http://www.geocities.jp/planetnekonta2/hanasi/ring/ring.html


国立天文台 理論研究部 + 天文シミュレーションプロジェクト (CfCA) 研究成果 2012年度
土星の環におけるプロペラ構造の形成
土星の環でプロペラ状の構造の発見(Tiscareno et al. 2006)
環に埋もれた小衛星が原因
プロペラの形成条件をN体シミュレーションで調べた
プロペラの観測例 Michikoshi and Kokubo, 2011, ApJ, 732L, 23
プロペラ状の部分空隙が形成されることを確かめた
衛星の大きさと周囲の密度で 形成条件が決まっている
http://th.nao.ac.jp/research/2012/research_2012.pdf
951デフォルトの名無しさん:2013/07/12(金) 21:35:31.18
G(Mm/r^2)だっけ?と、
mrω^2だっけ?

だけで何とかならんの?
つーか久しぶりすぎてこの公式が怪しいw
952デフォルトの名無しさん:2013/07/12(金) 21:39:25.27
とりあえず最初は彗星抜きで考えろよ。
純粋に今現在判明してる太陽系の惑星だけで。
953デフォルトの名無しさん:2013/07/12(金) 21:44:38.55
シュミレーションってどういうの?
ダイレクトXとか使って惑星がぐるぐる回ってるのを見られる感じ?
それを好きな角度や距離から見られる感じ?
NHKとかで出てくるCGみたいな感じ?
時間の進む速さを1000倍とか任意に指定できる感じ?
それで見たい年代を西暦で指定したりできる感じ?
954デフォルトの名無しさん:2013/07/12(金) 22:03:11.71
CSVなどで位置出力だけでいいんでは。でもリアルタイムCG画像を描ける程度の速度で。
画像、動画出力はいまは本質的でないこと。
955片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/12(金) 22:03:22.88
趣味じゃなくてシミュだよ。
F=maとF=GMm/r^2から加速度がわかる。加速度の積分から速度がわかる。
速度の積分から位置座標がわかる。
表示する惑星は、大きさをデフォルメしないとほとんど見えない。
956デフォルトの名無しさん:2013/07/12(金) 22:06:43.41
> 953
「わたしは発音が如何とかそれ以前のおバカです」 これコピペして
ctrl押しながらF7
「しゅみれーしょん」 と入力後 Enter

まずここから始める
957デフォルトの名無しさん:2013/07/12(金) 22:09:03.41
グラフィカルな部分は誰かがサクっと作って、基本データ(各惑星の質量、現在の速度、なんたら平面からずれてる角度)は外部ファイル、シミュレーションはライブラリにしたらいいんじゃないかな。
シミュレーションライブラリから計算結果を本体に送って、本体はただ描画するのみ。
データはテキスト形式、その他はライブラリ製作者の自由、自由にしといたほうが後で彗星やらブラックホールやら拡張できるからいいだろ。

こういう仕様ならば致命的に頭のおかしいLinuxヲタでも描画する本体さえ作れば比較的簡単に使える。
そしてスパコンを使わずに計算するためどうすれば効率よく計算できるかということかCベースで語られて盛り上がる。
958デフォルトの名無しさん:2013/07/12(金) 22:12:36.60
幸いなのは無限に計算しなくていいことだなw
50億年以内にこの星は確実に消えるから
50億年まで計算できれば十分w
959デフォルトの名無しさん:2013/07/12(金) 22:15:12.76
地球に土星みたいなリングがあったらとかどうでもいいんだよ。
実際ないんだから。
俺たちが知りたいのは地球が消えるその日のことなんだ。
960片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/12(金) 22:20:36.76
その日は太陽に飲み込まれるか、巨大隕石が激突するだろう
961デフォルトの名無しさん:2013/07/12(金) 22:30:34.44
http://blogimg.goo.ne.jp/user_image/22/5d/d4e005f31b083b2c4d77fc0d3123c0bb.jpg

1つめは「測地線の方程式」と呼ばれている式で、物体の質量による重力によって曲げられた4次元の時空を進む光の軌跡をあらわしている。

2つめは「重力場の方程式」とか「アインシュタイン方程式」と呼ばれている式で、右辺の T であらわされる物質の質量(=エネルギー)や運動量によって
左辺の G という「曲率」でその場所の時空がどのように曲げられるかを示している。

一般相対性理論に挑戦しよう!
http://blog.goo.ne.jp/ktonegaw/e/ea7ad9292ce01ad4abbbc8c98f3303d0
962デフォルトの名無しさん:2013/07/12(金) 22:49:38.65
位置関係のデータはどこで入手できる?
963デフォルトの名無しさん:2013/07/12(金) 22:55:59.27
>>960 ← すげーヴァカがいてびっくり、こんな古い知識で会話に入ってこようとしてるヴァカがいることにマジでびっくり
964片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/12(金) 23:01:04.13
>>963
新しい知識とやらを教えてもらおうか
965デフォルトの名無しさん:2013/07/12(金) 23:06:56.12
太陽系シミュレータの作成
本研究のシミュレータの初期条件は,以下の定数を元に計算し,比にした値を用いている.
http://www.is.oit.ac.jp/~shinkai/seminar/thesis/2009morimoto/2009_Bthesis_morimoto.pdf



「太陽系惑星の公転軌道を正確に表したGIF画像が海外で話題に」
http://i.minus.com/iAtC2afkODS6U.gif
http://www.youtube.com/watch?v=0jHsq36_NTU
http://www.youtube.com/watch?v=C4V-ooITrws
http://blog.livedoor.jp/drazuli/archives/6335298.html


惑星と小天体の軌道要素は以下のサイトで入手しました。
Keplerian Elements for Approximate Positions of the Major Planets(NASA JPL SSD)
http://ssd.jpl.nasa.gov/?planet_pos
JPL Small-Body Database Browser(NASA JPL SSD)
http://ssd.jpl.nasa.gov/sbdb.cgi
http://homepage2.nifty.com/m_kamada/javascript/solarsystem/
966デフォルトの名無しさん:2013/07/12(金) 23:18:11.29
>>963
そいつは荒らしだから相手にするな
そのコテにいろんなスレが潰されてる
NG必須
967デフォルトの名無しさん:2013/07/12(金) 23:21:03.90
現実的な問題として、惑星の位置はfloatで計算するのかね
968デフォルトの名無しさん:2013/07/12(金) 23:25:41.17
巻尺でミリ単位まで計ってるのを見たぞ
969片山博文MZパンク ◆0lBZNi.Q7evd :2013/07/12(金) 23:27:17.51
普通、doubleかlong double使うっしょ。floatはおっさん好み
970デフォルトの名無しさん:2013/07/12(金) 23:27:59.54
国土の海岸線を1メートル単位で算出してオレ凄いと威張るみたいな?
971デフォルトの名無しさん:2013/07/12(金) 23:31:33.64
日蝕の時間を分単位で特定できる精度ならゆるしてやらなくもない
972デフォルトの名無しさん:2013/07/12(金) 23:32:12.88
これによると太陽(系)自体がかなりの速度で前進してるがホントか?
銀河の中心のブラックホールの回りを公転してるってことか?


http://www.youtube.com/watch?v=0jHsq36_NTU
http://www.youtube.com/watch?v=C4V-ooITrws
973デフォルトの名無しさん:2013/07/12(金) 23:34:08.59
>>948
カッシーニ間隙とかの話?
974デフォルトの名無しさん:2013/07/12(金) 23:39:54.61
>>966
りょ
975デフォルトの名無しさん:2013/07/12(金) 23:42:56.56
現在測定されてる精度と、海王星までの距離によるな。

つーか冥王星って、

冥王星クラスの星がその先にいっぱいあるから

いちいちカウントするのやめようぜ!

ってことになったんだっけ?

それらの星は海王星とかにどの程度影響を与えてるんだろう。
976デフォルトの名無しさん:2013/07/12(金) 23:46:30.56
>>972
今のところ一応それが定説
977デフォルトの名無しさん:2013/07/12(金) 23:48:10.26
太陽系が高速移動していて、銀河系も高速移動してたら、その影響・重力も存在しているわけで、正確な軌道計算は困難だろ。3次元空間で計算する必要もあるし。




ニュース - 科学&宇宙 - 太陽の移動速度、想定より遅かった - ナショナルジオグラフィック 公式日本語サイト(ナショジオ)
http://www.nationalgeographic.co.jp/news/news_article.php?file_id=20120511003


天の川銀河ー太陽系は悠々自適に航海中
http://www.symphonic-net.com/imacocospace/sun/sumisumi/2013/07/amanoginga.html


太陽系、驚きの映像! 2013.04.29
すごいぞ!これは!!本当に驚いた。つくってくれた人、あんたは偉いぞ!
太陽系(Solar system )は宇宙を高速で移動していて、その惑星も公転軌道を守りながら移動している。
去年発表した国立天文台のデータによると銀河中心からの太陽系までの距離は2万8000光年前後、
銀河系内を周回する太陽系の回転速度は秒速220km/s前後、1周には約2億2500万〜2億5000万年かかると算出。
同じく去年NASAは、太陽は時速約8万3700キロで動いてると計測しました。
http://yacco369.blog.fc2.com/blog-entry-219.html
978デフォルトの名無しさん:2013/07/12(金) 23:51:07.68
SSEとかOpenCLとかやってたら普通にfloat使うな。
どうしてもその精度が必要な場合じゃなきゃdoubleなんて使わん。
979デフォルトの名無しさん:2013/07/12(金) 23:54:31.56
float 使うヤツはドシロートかおぢさん
http://toro.2ch.net/test/read.cgi/tech/1222048909/
980デフォルトの名無しさん:2013/07/13(土) 00:03:13.70
>>977
ややこしくなるからそれ後回しにしようぜw
981デフォルトの名無しさん:2013/07/13(土) 00:04:46.37
Wikipdia見たらAUとかって単位が使ってあった。

ってことは、精度はfloatで、単位はAUでやればいいのかね。
982デフォルトの名無しさん:2013/07/13(土) 00:16:05.92
疲れた、眠るね
983デフォルトの名無しさん:2013/07/13(土) 00:21:07.28
人はなぜ眠るのか
984デフォルトの名無しさん:2013/07/13(土) 00:32:24.77
ひつぎが一匹、ひつぎが二匹、…自演も楽じゃないな
985デフォルトの名無しさん:2013/07/13(土) 00:51:46.36
doubleのハードウェア演算器が実装されてるんだから
普通はdoubleで計算するな。floatが必要なら最後に
キャストすればいいし。
986デフォルトの名無しさん:2013/07/13(土) 01:07:39.32
物理シミュレーションしてるとΔTのせいで浮動小数点の計算誤差の影響がものすごく大きい
double でも精度が全然足りない

float で計算するとしたらゲームでそれっぽく見せる用
987デフォルトの名無しさん:2013/07/13(土) 01:11:33.68
最近のPFはGPU用の多倍長少数実装しないのか?
988デフォルトの名無しさん:2013/07/13(土) 01:12:56.13
PFじゃないやPGだな
無い物は無いで自作しするのが健全なC使いの精神だろ
989デフォルトの名無しさん:2013/07/13(土) 01:55:19.10
聞きかじった知識で妄言吐くのが健全とは思えないが
990デフォルトの名無しさん:2013/07/13(土) 02:02:39.05
for(int i=0,...,..)←これがコンパイル通らない(´・ω・`)
こういうのを通るようにできるコンパイルオプション有りませんか?
991デフォルトの名無しさん:2013/07/13(土) 02:02:51.32
>>989
ド素人はクソして寝ろ
992デフォルトの名無しさん:2013/07/13(土) 02:11:08.83
ド素人の人こっちにも来るようになったのか
993デフォルトの名無しさん:2013/07/13(土) 02:19:22.51
描画担当から言わせてもらうと、
ビジュアル面はゲームみたいなもんだから
floatで描画に受け渡すAPI実装するよ
994デフォルトの名無しさん:2013/07/13(土) 02:23:36.59
描画とシミュレーションは別スレッドにしたほうがいいような。
995 ◆QZaw55cn4c :2013/07/13(土) 03:13:45.42
>>990
C++ でコンパイルする。
お使いのコンパイラはなんですか?
996デフォルトの名無しさん:2013/07/13(土) 03:25:04.60
>>995
gcc使ってます。
g++に変えればC++コンパイル出来るらしいからやってみたけど
よくわからないエラーが増えたので
C言語らしくfor文の前に宣言するしかなさそうですね
997デフォルトの名無しさん:2013/07/13(土) 03:59:07.89
-std=c89 ISO 1990 C 標準に準拠させる
-std=c90 ISO 1990 C 標準に準拠させる
-std=c99 ISO 1999 C 標準に準拠させる
998デフォルトの名無しさん:2013/07/13(土) 04:29:07.56
うめ
999 ◆QZaw55cn4c :2013/07/13(土) 06:50:19.98
>>996
c99 でもできるから >>997 にしたがって -std=c99 を付けてコンパイルすればいいでしょう
1000デフォルトの名無しさん:2013/07/13(土) 09:26:05.27
C言語なら俺に聞け(入門編)Part 117
http://toro.2ch.net/test/read.cgi/tech/1373675124/
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。