C言語なら俺に聞け(入門編)Part 112at TECH
C言語なら俺に聞け(入門編)Part 112 - 暇つぶし2ch2:デフォルトの名無しさん
13/01/16 05:39:44.25
< `∀´>ニダー

3:デフォルトの名無しさん
13/01/16 11:04:07.51
thunder

4:デフォルトの名無しさん
13/01/16 12:50:25.00
>>1
おつ

5:デフォルトの名無しさん
13/01/16 13:37:06.26
>>1


6:デフォルトの名無しさん
13/01/16 18:46:32.92
今時, K&R のソースを優しく通してくれるコンパイラってある?

7:16
13/01/16 18:49:56.04
あ, 書き忘れてた. おそらく Unix-V7 の頃のコードです

8:デフォルトの名無しさん
13/01/16 18:57:23.73
純粋なK&Rのみであれば通るだろ

9:デフォルトの名無しさん
13/01/16 18:58:15.47
int main(argc, argv)
int argc;
char *argv[];
{
 ~
 return 0;
}

みたいなやつならうちのコンパイラでも通してくれた。

10:16
13/01/16 19:06:07.85
>>9
どっちかって言うとキャスト方向
いろいろ, 大変なことになってるw

11:デフォルトの名無しさん
13/01/16 21:24:08.23
初心者からの質問です。
―>という記号なんですがよく分かりません。
検索しても出でこないのです。
どなたかこの記号の意味を教えていただきませんか?

12:デフォルトの名無しさん
13/01/16 21:28:40.25
>>11
アロー演算子でggr

13:デフォルトの名無しさん
13/01/16 21:32:02.41
>>11
struct SampleStruct {
int a;
char b;
};

struct SampleStruct *pss;
pss = malloc(sizeof(SampleStruct));

pss->a = 0;
pss->b = 'A';

14:デフォルトの名無しさん
13/01/16 22:01:02.22
>>13
2点ほど突っ込みどころがあるが、
コンパイルできるか?

15:デフォルトの名無しさん
13/01/16 22:12:31.35
a->b は (*a).b のシンタックスシュガー

16:デフォルトの名無しさん
13/01/17 00:24:02.99
>>11
その程度じゃ、大して釣れないと思うぞ

17:デフォルトの名無しさん
13/01/17 00:38:01.14
VisualStudioでC言語扱えるの?
USBドライバを作る、とかいう話が来てるんだけど
ドライバ扱ったことないから戸惑ってる

ちなみに家にはVS2008だけがあるのだが、これ流用できない?
寝かしとくのがもったいなくて

18:デフォルトの名無しさん
13/01/17 00:42:51.31
C、C++、C#、VB.Netが使える
おとなしく2012使えよ

19:デフォルトの名無しさん
13/01/17 01:13:18.46
USBドライバを作るならDDK買わなければいけないんじゃないの?

20:デフォルトの名無しさん
13/01/17 01:15:01.66
int main(int o, int p){
int sex = 0721;
int orz=3;
int OTL=3;
(o^p^o);
}

21:デフォルトの名無しさん
13/01/17 01:17:10.23
>>19
Dislike Duke Kemeny

22:デフォルトの名無しさん
13/01/17 01:38:11.51
>>18
サンクス
>>19
WDKのことか?ググッたら出てきたんだが Windows Driver Kit 

23:デフォルトの名無しさん
13/01/17 05:29:40.84
ああねむい…

24:デフォルトの名無しさん
13/01/17 08:49:58.35
win32のテトリス、1時間で作りましたに騙されてる系?
usbドライバ作りますの君(きみ)は

25:デフォルトの名無しさん
13/01/17 13:03:57.30
いまどき系とか

26:デフォルトの名無しさん
13/01/17 16:25:40.46
署名問題もあるからMS-WindowsだとWinUSBを叩くのがよさげ

27:デフォルトの名無しさん
13/01/17 20:55:48.18
試しにpingしてみろ
先月から1472バイトまでしか受け付けない現象が起きてるから
原因は俺には大体見当がついたが・・・
管理人の技量が足りなそうで復旧できないかもね

28:デフォルトの名無しさん
13/01/17 22:36:00.96
IPヘッダが20バイトでICMPヘッダは8バイトだから、MTUが1500バイトなら1472バイトまでしか通らない。

29:859
13/01/18 15:58:49.53
$gcc -ansi でコンパイルすると全角文字がある時に
example.c:x: error: stray ‘\343’ in program
example.c:x: error: stray ‘\200’ in program
example.c:x: error: stray ‘\200’ in program
の様なエラーが出るのですが、この時の 343, 200 の様な番号が何の番号なのか知りたいのですが
何かの文字コードの番号なのでしょうか?

30:デフォルトの名無しさん
13/01/18 16:57:41.95
8進数なので、343 200 200 = E3 80 80 = UTF-8の全角スペース だな。

31:デフォルトの名無しさん
13/01/19 15:41:12.06
中学の時に番長と呼ばれてた

32:29
13/01/19 16:41:05.95
>>30
今にして思えば全角スペース1つで3行のエラーが出ているのに
3行合わせて1つの文字という認識ができなかったのが悔しいです。
Esc キーを ‘\033′ の様に書いていたりもしたのに。
UTF-8 では日本語は 3 バイトという話も頭の中で繋がりました。
本当にありがとうございました。

33:デフォルトの名無しさん
13/01/20 09:45:13.58
いえいえ

34:29
13/01/20 11:15:28.67
何度お礼を言っても言い足りません。
本当にありがとうございました。

35:デフォルトの名無しさん
13/01/20 14:25:23.50
しつこいな

36:デフォルトの名無しさん
13/01/20 18:01:19.35
GCCのtypeofに相当する機能って最近の規格に盛り込まれてる?

37:デフォルトの名無しさん
13/01/20 18:49:19.78
遺伝的アルゴリズムの多点交叉(2点交叉など)について知りたいのですが、
プログラム例などを交えて解説されているサイトってありますか??

38:デフォルトの名無しさん
13/01/20 19:46:59.23
ポインタとかクラスを実用例とかで解説してくれているサイトとかってありますか?

39:デフォルトの名無しさん
13/01/20 20:16:33.62
webkitを使ってみたいのですが、どうすればいいですか?

40:デフォルトの名無しさん
13/01/20 20:19:37.89
Google Chromeをインストールして起動すればよい

41:デフォルトの名無しさん
13/01/20 21:07:43.03
>>38
Cにはクラスはないんだが。

>>37
C言語スレで聞く内容じゃないことは確かだ。

42:デフォルトの名無しさん
13/01/20 21:44:59.53
クラスを実用的に使う方法みたいな、プログラミングの技術ではなく
方法論的なものを論じた書籍はほとんどない。残念ながらこれが現実。

43:デフォルトの名無しさん
13/01/20 22:05:33.55
構造体に関数ポインタでクラス

44:デフォルトの名無しさん
13/01/22 08:59:50.90
デカルト、カント、ショーペンハウエルで半年くらす

45:デフォルトの名無しさん
13/01/22 09:09:20.37
>>44
そんなこと言う奴、30年ぶりに見たわ

46:デフォルトの名無しさん
13/01/23 06:45:23.13
char *p="hoge";
と記述したら、ポインタ理解できてる?
とドヤ顔で指摘されちゃった。

47:デフォルトの名無しさん
13/01/23 07:48:13.34
const char *p = "foo bar baz";

48:デフォルトの名無しさん
13/01/23 09:35:11.14
ざわ…ざわ…

49:デフォルトの名無しさん
13/01/23 15:09:28.05
>>46
よし死ね

50:デフォルトの名無しさん
13/01/23 15:20:46.45
int* p=0;while(1){*p=0;p++;}
これ実行したらどうなるの?

51:デフォルトの名無しさん
13/01/23 15:24:28.51
実行してみろよ

52:デフォルトの名無しさん
13/01/23 16:16:43.72
sizeof(main) が 1 なんですけど、どうしてでしょうか。

53:デフォルトの名無しさん
13/01/23 16:34:21.36
>>52
GCCだから

54:52
13/01/23 17:12:33.93
>>53
そうなんですか。回答ありがとうございます

55:デフォルトの名無しさん
13/01/23 17:35:04.65
>>50
x86環境なら *p = 0を実行した時点でセグメンテーションフォルト。

56:デフォルトの名無しさん
13/01/23 18:27:59.53
>>50
環境次第

57:デフォルトの名無しさん
13/01/23 23:50:46.92
datファイルから文字を読み込み表示すると最後の文字だけ@マークが表示されるんですが
なんでかわかりますか?

58:デフォルトの名無しさん
13/01/24 00:00:36.71
知るかボケ何だよdatファイルって

59:デフォルトの名無しさん
13/01/24 00:04:00.96
そーゆーフォーマットのデータだから

60:デフォルトの名無しさん
13/01/24 03:34:17.30
構造体を、例えば

struct node{
char str[10];
int a;
} x;

みたいに定義したら、xの構造体に含まれるstr[10]の先頭のアドレスを
取り出すにはどうすればいいのでしょうか。
&(x.str[0])かな~とか思ったんですが、うまくいかなくて・・・

61:デフォルトの名無しさん
13/01/24 03:57:34.53
>>60
&(x.str[0])
で問題ないけど、、どんなコードで失敗するの?

62:デフォルトの名無しさん
13/01/24 04:02:14.62
&(x.str[0]);
x.str
どちらでも同じ意味だね。

63:デフォルトの名無しさん
13/01/24 04:03:35.02
char *p;
p=x.str;

64:デフォルトの名無しさん
13/01/24 04:04:12.10
>>60
URLリンク(ideone.com)
で試したけど、特に問題無いと思うが…

65:デフォルトの名無しさん
13/01/24 08:11:20.05
>>60
ひょっとして、構造体に定義したメンバが常に定義した通りに並ぶと思ってる?

66:デフォルトの名無しさん
13/01/24 09:34:13.68
> うまくいかなくて・・・
こういう質問に答えるのは無駄。スレ汚しにしかならない。

67:デフォルトの名無しさん
13/01/24 11:03:29.61
そう?

68:デフォルトの名無しさん
13/01/24 11:19:52.71
・上手くいかない実例が書かれてない
・ホントはやり方を手早く教えてほしいだけ
・ヴァカどもの教えたい優越感やらコンプレックスを刺激して答えだけ引き出してる

つまりは>>60なんかに答える奴は低能無能のアホ

69:デフォルトの名無しさん
13/01/24 12:37:01.58
chromeでググッた後戻るボタンでgoogleの画面に戻ると
入力した検索キーワードが消えてイラつくんですが
どうしたらいいですか

70:デフォルトの名無しさん
13/01/24 12:40:18.94
ソースを書き換えてビルドし直して下さい

71:デフォルトの名無しさん
13/01/24 16:03:40.20
Openソースだし自分でなんとかしろ

72:デフォルトの名無しさん
13/01/24 16:09:25.25
ブラウザ側じゃ無いんじゃね?
webhpのリダイレクト行程でなんかワルサしてる感じ

73:デフォルトの名無しさん
13/01/25 15:41:25.21
3行×2列の整数型の2次元配列matrix_dataに関して、

matrix_data[2][0] は、matrix_data[0][0]を1番目の要素とすると、計算機のメモリ上では、何番目の要素となるか数字で答えよ。

74:デフォルトの名無しさん
13/01/25 15:54:17.02
CとC++はどっちが大規模開発に向いてますか?

75:デフォルトの名無しさん
13/01/25 16:06:49.84
>>73
マルチすんなカス

76:デフォルトの名無しさん
13/01/25 18:54:09.20
>>74
C++

77:デフォルトの名無しさん
13/01/25 18:57:07.39
マルチなんて微罪に思える程に73は知性と人間性に問題があるな

78:デフォルトの名無しさん
13/01/25 19:00:05.20
C言語を書く人の定番のIDEってありませんか?
VC++ありますけどC言語の補完がでないのできついんです

79:デフォルトの名無しさん
13/01/25 19:33:07.81
>>78
QtCreator

80:デフォルトの名無しさん
13/01/25 20:46:27.20
C#のListみたいに動的に配列の追加・削除はできないの?

81:デフォルトの名無しさん
13/01/25 20:50:03.45
C#のListみたいのがCで実装されてんだよ

82:デフォルトの名無しさん
13/01/25 21:48:12.27
>>80
せめてC++ならな

83:デフォルトの名無しさん
13/01/25 22:28:42.55
Cの場合は自前でリンクリストを設計するところからだね。

84:デフォルトの名無しさん
13/01/25 22:44:09.40
自己参照構造体を使って自前でlistを作成するのが
Cプログラマの正しい生き方

85:デフォルトの名無しさん
13/01/25 22:50:15.80
/* 自己参照 */
struct ZZ {
int val;
struct ZZ *pNext;
};
struct ZZ root, next;
root.pNext = &next; next.pNext = &root;

86:デフォルトの名無しさん
13/01/26 01:34:21.93
C使いならエディタやIDE位自分で開発しろ

87:デフォルトの名無しさん
13/01/26 06:43:46.02
動的配列を置く場所をスタック上にこだわった場合
ちょっと無理があるね

88:デフォルトの名無しさん
13/01/26 14:39:03.30
スタックの伸びる方向と添字の伸びる方向が逆だからなぁ

89:デフォルトの名無しさん
13/01/26 14:50:03.42
そんなあなたにPA-RISC

90:デフォルトの名無しさん
13/01/27 13:20:07.59
unix使いはスタックが無限だと思ってるふしがあるから嫌いだ。

91:デフォルトの名無しさん
13/01/27 14:21:40.89
あいつら平気でchar b[10485760];とか書きよる

URLリンク(www.atmarkit.co.jp)

92:デフォルトの名無しさん
13/01/27 15:22:20.37
本当に書いてあったw

93:デフォルトの名無しさん
13/01/27 15:32:23.75
>>90
Unix 関係なしで, 大量にメモリー積んだHPC環境に慣れたやつとかだと,
32bit機で平気でこんな事しようとするぞ
double x[1000][1000][1000];
double y[1000][1000][1000];
double z[1000][1000][1000];
foo() {
int i, j, k;
for (i = 0; i < 1000; ++i)
for (j = 0; i < 1000; ++j)
for (k = 0; k < 1000; ++k)

94:デフォルトの名無しさん
13/01/27 15:57:39.00
メインメモリを超えるサイズのデータ扱うのに、意図的にdiskにマップぐらいするだろ。

95:デフォルトの名無しさん
13/01/27 16:06:38.84
>>93
しねーよ。デブ。

96:デフォルトの名無しさん
13/01/27 19:30:48.81
スタックの話してる時に静的変数を持ち出す93

97:デフォルトの名無しさん
13/01/27 19:52:29.47
えっ

98:デフォルトの名無しさん
13/01/28 09:03:35.08
初心者によくあるのはそのx,y,zみたいな変数を深いネストで呼ばれる各関数で
一時変数として自動変数で宣言しているようなもの

99:デフォルトの名無しさん
13/01/28 19:45:35.74
何度かここでGAについて質問させてもらっているものです

160bitの2進数の列から特定の5bitの2進数を先頭から探索していき,
目的の5bitの列があれば得点を加算していき,それが個体の適応度となる
というGAを作成しているのですが,200世代くらいみても個体の平均適応度が,
全然上昇していきません  10世代目くらいまではグッと上昇するのですが…
遺伝的アルゴリズムってこんなものなんでしょうか…??

以下作成したプログラムです
URLリンク(codepad.org)

100:デフォルトの名無しさん
13/01/28 19:58:29.26
初期収束でググれ

101:デフォルトの名無しさん
13/01/28 20:06:32.47
evaluationがおかしくないかい?

102:デフォルトの名無しさん
13/01/29 00:03:43.85
intは32bitなのに、160bit格納しようとしてるところが...

103:デフォルトの名無しさん
13/01/29 00:24:14.85
char s[1];
scanf("%s",&s);
printf("%s",s);

これ1文字までしか受け取れないと思ってたけどなん文字でも受け取って表示できるのはなぜですか?
あとこんな風になん文字入力されるか分からない時ってどんな風に書けば良いのですか?

104:デフォルトの名無しさん
13/01/29 00:25:21.56
>>103
それメモリぶっ壊してるから
超危険だから

105:デフォルトの名無しさん
13/01/29 00:29:34.80
最大フィールド幅を使うとかfgetsとかだっけ?しばらくC使ってないから忘れてしまった
メモリぶっこわしてるのは受け取ってるとは言えないだろうな

106:デフォルトの名無しさん
13/01/29 00:32:21.32
gets
URLリンク(www1.cts.ne.jp)

もしくは
getcharで一文字毎に受け取ってみる

107:デフォルトの名無しさん
13/01/29 00:35:12.71
scanfで幅を指定して受け取るか
fgetsで幅を指定して受け取るかだな
scanfでも最大フィールド幅指定は可能

最大幅が決まって欲しくない場合は、
最大幅を指定しつつ、終わりが見えなければ次を読み込んで後で連結・・・とかだな

>>106
getsは最悪な関数なので使用禁止
getcharでちまちまやるのは正直どうかと

108:デフォルトの名無しさん
13/01/29 00:38:50.07
ちまちまやるのもいいんじゃないの、最初の頃は

109:デフォルトの名無しさん
13/01/29 00:46:52.71
使えない物を覚える必要は無い。

110:デフォルトの名無しさん
13/01/29 00:53:46.90
へー、fgetcharも使わないの?

111:デフォルトの名無しさん
13/01/29 00:56:38.62
PC用のアプリ作る場合、Cの標準関数ってほとんど使わなくね。

112:デフォルトの名無しさん
13/01/29 00:59:59.45
便利な関数がいっぱいあって楽になったように思ってると
基本的なところでハマるような
scanfの書式を一生懸命覚えようとしてる人が...

113:デフォルトの名無しさん
13/01/29 00:59:59.93
scanfって長さ指定出来たんだ
ありがとうございます

114:デフォルトの名無しさん
13/01/29 01:14:00.50
<windows.h>の中身でよく使う基本的なものを教えてください
コマンドプロンプトには飽きたのです

115:デフォルトの名無しさん
13/01/29 02:01:42.88
つ WinMain

116:デフォルトの名無しさん
13/01/29 02:14:26.56
>>114
DispatchMessage(), GetMessage(), IsDialogMessage(), PostQuitMessage(),
SendDlgItemMessage(), SendMessage(), TranslateMessage()...

117:デフォルトの名無しさん
13/01/29 02:16:27.34
winuser.h -- USER procedure declarations, constant definitions and macros

118:デフォルトの名無しさん
13/01/29 07:39:20.32
>>114
内容古くなってきてるが猫でもでも見れば

119:デフォルトの名無しさん
13/01/29 12:27:32.53
>>103
scanfの中も&sになってることにも突っ込んでやれよ
動かないことは無いけどさ

120:デフォルトの名無しさん
13/01/29 13:55:49.39
>>119
コンパイルで警告出るレベルの間違いを態々貼ってるんだから、103は釣り。

121:デフォルトの名無しさん
13/01/29 15:54:03.56
初心者がスタックオーバーフローを疑問に思う時点でおかしいもんな

122:デフォルトの名無しさん
13/01/29 19:13:08.02
>>99
ほれ
URLリンク(codepad.org)

123:デフォルトの名無しさん
13/01/30 01:20:34.55
/* 文字列sの長さを返す */
int strlen ( char *s )
{
char *p = s;
while ( *p != '\0' ){
p++;
}
return p-s;
}

戻り値をポインタ演算のp-sで返して、int型というのは一般的なんでしょうか。

124:デフォルトの名無しさん
13/01/30 01:30:06.43
size_t

125:デフォルトの名無しさん
13/01/30 01:32:10.22
int strlen ( char *s )
{
 int i;
 for (i = 0; *s != '\0'; i++);
 return i;
}

126:デフォルトの名無しさん
13/01/30 01:42:17.47
size_tは違うべ

127:デフォルトの名無しさん
13/01/30 01:49:08.62
size_t だと負数が返せないだろ

128:デフォルトの名無しさん
13/01/30 01:54:27.91
sizeof(s) / sizeof(s[0])

129:デフォルトの名無しさん
13/01/30 01:56:54.10
URLリンク(www9.plala.or.jp)
URLリンク(linuxjm.sourceforge.jp)
URLリンク(msdn.microsoft.com)

130:デフォルトの名無しさん
13/01/30 02:08:00.83
strlenに限った話じゃなくて、ポインタの引き算の話じゃないの?

131:デフォルトの名無しさん
13/01/30 02:36:59.12
ポインタの演算は初心者には推奨されていない?

132:デフォルトの名無しさん
13/01/30 03:13:01.24
>>125
無限ループしてるんだが

133:デフォルトの名無しさん
13/01/30 03:23:28.19
for (i = 0; *s != '\0'; i++,s++);

134:デフォルトの名無しさん
13/01/30 03:26:15.90
strlenに限った話じゃないならptrdiff_tだろ

135:デフォルトの名無しさん
13/01/30 04:55:31.91
>>127
文字列長で負数て…

136:デフォルトの名無しさん
13/01/30 05:20:55.52
初心者ならではの回答だと思ってた

137:デフォルトの名無しさん
13/01/30 08:58:25.03
初心者は異常系を考えないから、負数は不要と思い込んじゃうんだよね

138:デフォルトの名無しさん
13/01/30 09:04:40.00
それ、初心者対初心者では?

139:デフォルトの名無しさん
13/01/30 09:41:02.86
stddef.hをしっかり読め

140:デフォルトの名無しさん
13/01/30 12:38:40.67
strlen は size_t と規格で決まってる

141:デフォルトの名無しさん
13/01/30 21:57:00.85
>>137
エラーはエラーで返せばいい

142:デフォルトの名無しさん
13/01/30 22:48:14.46
一方std::stringはstd::string::npos == (std::string::size_type)-1を使用した

143:デフォルトの名無しさん
13/01/30 23:25:29.45
とりあえず >>142 が中級の下だということがバレた
それは数値としての-1に意味はない
npos というシンボルに、通常あり得ない数である「符号無しの最大値」を使っているだけ

144:デフォルトの名無しさん
13/01/30 23:28:18.69
符号無しでもエラーを表現出来るという話以上の事はしてないけど

145:デフォルトの名無しさん
13/01/31 01:36:15.62
まあ何だ、ストリップでも見に行けよ

146:デフォルトの名無しさん
13/01/31 07:09:10.40
で、具体的にCでstrlenに負数やらエラー表現が必要な場合って何よ?

147:デフォルトの名無しさん
13/01/31 07:30:10.74
strlenに必要なんじゃなくて、
それを扱う先で必要になるんだろ

148:デフォルトの名無しさん
13/01/31 07:33:46.56
引数がNULLの場合くらいだな
やるとすれば
何か返すにしても0返したのでいいと思うけど、区別したい場合もあるかもしれない

先にチェックしても手間は変わらない気もするが・・・

149:デフォルトの名無しさん
13/01/31 07:51:23.65
だな
strlen にエラーは必要ないわ

150:デフォルトの名無しさん
13/01/31 08:05:30.42
どうすれば出来るか分かりません...教えてください。

[数字を入力]-->[(入力した数字)/2=0になるまで[2で割った余りを表示 --> 2で割る -->2で割る]をループ]

#include <stdio.h>
int main () {
int i[2];
printf("数字を入力してください。¥n");
scanf("%d",&i[0]);
printf("%dを2進数に変換すると、¥n",i[0]);
i[1]=i[0];
while (i[0]!=0) {
i[1] = i[0] % 2 ;
printf("%d",i[1]);
i[0]/2;
}
printf("¥n");
return 0;
}

151:デフォルトの名無しさん
13/01/31 09:17:30.62
>>150
#include <stdio.h>

void func(int n){
if (n / 2)func(n / 2);
printf("%d", n % 2);
}

int main (){
int i;
printf("数字を入力してください¥n");
scanf("%d", &i);
printf("%dを2進数に変換すると、¥n", i);
func(i);
printf("¥n");
return 0;
}

152:デフォルトの名無しさん
13/01/31 09:35:02.44
>>151
ありがとうございます。
for,whileで作ることは不可能ですか?

153:デフォルトの名無しさん
13/01/31 12:59:02.98
>>150
i[0]/2;

i[0]/=2;
だな。
あとそのプログラムだとMSBとLSBが逆に表示されるから、
反転させるのは自分で考えな。

154:デフォルトの名無しさん
13/01/31 15:49:49.88
>>152
#include <stdio.h>
#define N 2/* N進数 */

int main (){
int n, i = 63;
char a[i + 2];

printf("数字を入力してください¥n");
scanf("%d", &n);
printf("%dを%d進数に変換すると、¥n", n, N);
while (n) {
a[i--] = n % N + '0';
n /= N;
}
printf("%s¥n", a + i + 1);

return 0;
}

155:デフォルトの名無しさん
13/01/31 16:57:41.22
再帰とか重くなるし見辛いだけだから使わない方がいい

156:デフォルトの名無しさん
13/01/31 17:00:12.06
馬鹿にはそう感じるんだね

157:デフォルトの名無しさん
13/01/31 19:46:44.38
GCC のクロスコンパイラを作る話はここで OK?
それともどこかにちゃんとしたスレある?

158:デフォルトの名無しさん
13/01/31 19:47:27.30
それのどこが入門編だよ

159:デフォルトの名無しさん
13/01/31 19:49:22.85
>>157
スレリンク(tech板)

電電板?

160:デフォルトの名無しさん
13/01/31 20:05:33.33
>>159 ありがとう

161:デフォルトの名無しさん
13/01/31 21:09:13.21
>>154
ありがとうございます

162:デフォルトの名無しさん
13/01/31 22:16:11.62
いえいえ、お礼はいらないよ

163:デフォルトの名無しさん
13/01/31 22:19:40.52
むしろ謝罪しろ

164:デフォルトの名無しさん
13/01/31 23:29:57.50
     (⌒⌒)
ファビョ━ l|l l|l ━ン!
 / ̄ ̄⌒⌒ ̄\
 |    __λ_ |
 |   ノ ヽ 〆| |
 |   ノ      \|
 | / #ノ(_)(#)
 \___  /TT|/
     |  |UU|   | ̄ ̄|  | ̄|      _| ̄|__| ̄|_□□   | ̄|    | ̄ ̄|  | ̄|       | ̄| | ̄|
     |  |  |   ̄ ̄  |  |   __   |_  __  __|   / /      ̄ ̄  |  |       |  | |  |   /|
     |  |  │ | ̄ ̄|  |  | _| |__  |_| |  |    /  |     | ̄ ̄|  |  |       / /  |  |  /  |
     |  |  │   ̄ ̄_/ / |   _ |     / /   // | |       ̄ ̄_/ /     / /  |  |/  /
     _| ノ  ノ  | ̄ ̄_/   ̄| | |/   //   |/  | |     | ̄ ̄_/    /_/    |    /
   / ∩∩∩    ̄ ̄        ̄      ̄         ̄
   |  ι ̄ ̄ ̄|
   |_____|

165:デフォルトの名無しさん
13/02/03 17:29:14.29
おもいっきりC++だけど、C言語の範囲なのでここで質問します

QTextStream qts(&f);
QString dat = qts.readAll();

return dat; ← これはNGだと思うんですが、どうやってreturnすればいいんですか?

166:デフォルトの名無しさん
13/02/03 17:58:38.48
そこのqts.readAll()が返してるくらいだから返せるんじゃないの?

167:デフォルトの名無しさん
13/02/03 22:48:20.92
メイン関数からいろんなサブ関数に同じ値受け渡しまくるくらいなら広域変数にした方が良いですか?

168:デフォルトの名無しさん
13/02/03 22:56:32.38
グローバル変数はどこで書き込まれどこで読み込まれるか、じっくり調べでもしない限りわからない。それはある種の危険を伴うのでは?

169:デフォルトの名無しさん
13/02/03 23:23:10.57
value dealer なる怪しげな機能を作ればいい

170:デフォルトの名無しさん
13/02/03 23:45:13.88
setter/getter の再実装ですか?

171:デフォルトの名無しさん
13/02/03 23:51:19.15
書き込みは限られた場所からのみ
読み込みは全体からできる
そんなのないですか

172:デフォルトの名無しさん
13/02/03 23:58:24.52
グローバル変数をstaticで宣言すると、そのファイル内の関数でのみ参照でき外部に非公開

173:デフォルトの名無しさん
13/02/04 00:05:38.50
ファイルが別なのでだめです

174:デフォルトの名無しさん
13/02/04 00:26:45.90
マクロでごまかす

175:デフォルトの名無しさん
13/02/04 00:58:46.93
マルチスレッドについて質問です。
以下のコードを書いたのですが、最後のprintfの内容が出力されないのは何故でしょうか。
先頭にprintfを書くと出力されるのが更に謎なのですが。。

URLリンク(ideone.com)

176:デフォルトの名無しさん
13/02/04 01:15:30.65
fflush() を全部の printf() の後にいちいちつけたらどうなる?

177:デフォルトの名無しさん
13/02/04 02:36:41.71
static void*にゴッソリmallocして後はメタる
#define VALUE0 (*(const int*)&VALUE0RW)
#define ARRAY0 (*((const int*)[10])&ARRAY0RW)
#define VALUE1 (*(const long*)&VALUE1RW)
#define VALUE0RW (*(int*)UNQNAME)
#define ARRAY0RW (*((int*)[10])(&VALUE0RW+1))
#define VALUE1RW (*(long*)(&ARRAY0RW+1))
#define GETPTR void* UNQNAME=get_ptr();
#ifdef IMPLE
#define UNQNAME 0
#define RQSZ ((char*)(&VALUE1RW+1))
static void*p;
#endif

main(){
p=malloc(RQSZ);
#undef UNQNAME
VALUE0RW=...

178:デフォルトの名無しさん
13/02/04 06:35:58.74
>>176
やってみたけど出力されませんでした。
gdbでbreakpoint貼ってみたらちゃんと通ってはいるのでもう何がどうなっているのか。。

179:デフォルトの名無しさん
13/02/04 06:38:44.09
>>178
環境は?

180:デフォルトの名無しさん
13/02/04 07:08:52.90
>>175
> printf("ここでないお?!\n");
の1行前に
sleep(1); // 1秒待つ
を入れても表示されないかな。

それとか、
main()の最初に
setvbuf(stdout, (char *)NULL, _IONBF, 0);
を1行入れてみたら表示されないかな。

181:デフォルトの名無しさん
13/02/04 12:18:23.68
>>175
プログラム自体は正しい。
ライブラリなどのコンパイルオプションがが間違っているのだろう。

182:デフォルトの名無しさん
13/02/04 14:48:33.55
>>175
Debian(wheezy)のgcc(4.7.2)で
gcc -pthread 175.c
して ./a.out を実行して、
"ここでないお?!"
が普通に出るが。

183:デフォルトの名無しさん
13/02/04 14:58:11.26
funcじゃなくて&funcを渡してるのは問題ないの?

184:デフォルトの名無しさん
13/02/04 15:48:39.36
>>183
大丈夫だ。問題ない。
むしろ関数のときだけ & 省略が許される例外みたいなもん

185:デフォルトの名無しさん
13/02/04 19:55:13.54
配列も

186:デフォルトの名無しさん
13/02/04 20:06:00.45
そもそもC等だとi++じゃなくて++iと打つのが普通だし(for文の中を除く)

187:デフォルトの名無しさん
13/02/04 20:08:17.80
用途によるだろ

188:デフォルトの名無しさん
13/02/04 20:08:30.50
>>175
環境は?

189:デフォルトの名無しさん
13/02/04 20:09:18.01
俺だったら、+ を1回多く打つ刹那の時間、
次のコーディングイメージを頭に思い描いていたけどな。

190:デフォルトの名無しさん
13/02/04 20:13:47.14
前置する必要がある時以外は後置してるな。++

191:デフォルトの名無しさん
13/02/04 20:14:11.88
>>186
馬鹿死ね消えろ
a++;
--a;
が普通、というかこれしかない
ポストインクリメント・デポストデクリメントが唯一無二、それ以外のアーキが存在するとでも?

スタックをみよ。

192:デフォルトの名無しさん
13/02/04 20:16:29.26
デポストデクリメントw

193:デフォルトの名無しさん
13/02/04 20:22:01.27
a += 1;
a ++;

a -= 1;
a --;

読みやすいので a++; a--; 使います。

194:デフォルトの名無しさん
13/02/04 20:23:09.88
アホがスレ伸ばすネタを投下しないように

195:デフォルトの名無しさん
13/02/04 20:23:36.60
>>193
だからいっただろう?
a-- なんてありえないんだから、馬鹿しかつかわない表記なんだから、読みやすいとか理由にならないから

死ね

196:デフォルトの名無しさん
13/02/04 20:24:01.33
薬用石鹸デポスト!
好評発売中!

197:175
13/02/04 20:24:45.23
環境はこれです。

Windows7 + cygwin1.7 + gcc4.5.3
gcc -lpthread main.c

sleep(1);をprintfの前に入れても結果は同じでした。。
呪いの類ですかね・・

198:175
13/02/04 20:27:02.79
>>180
setvbuf(stdout, (char *)NULL, _IONBF, 0);入れたら出るようになりましたー!
環境依存?!

199:デフォルトの名無しさん
13/02/04 20:27:06.95
knoppixやってみて
それでもダメなら
呪い

200: ◆QZaw55cn4c
13/02/04 20:29:07.19
>>197
正直なところ、マルチスレッドにて、各スレッドが共有するストリームになんの下準備もなく直に書き込むこと自体が怪しいと思うのです。
スレッド共通なものに対して個々のスレッドがばらばらとアクセスするときは、まず例外なく排他処理を行うべきだと思うのです。

pthread には win32api の criticalsection がないのでヘタレの私には堪えます。

201:デフォルトの名無しさん
13/02/04 20:33:53.14
>>200
joinしてるじゃないの

202: ◆QZaw55cn4c
13/02/04 20:41:24.67
>>180
いれるのなら join の前にsleep かなあ‥‥‥
チャイルドプロセスが走りすらしていない状況で join してしまうとどうなるのだろう‥‥‥

203:デフォルトの名無しさん
13/02/04 21:01:42.22
挙動を見るに、初めてのprintfの実行時に何らかの初期化が動いていて、
それがメインスレッドでないと不具合を起こす、という感じに見える

204:デフォルトの名無しさん
13/02/04 21:17:48.10
>>198
出たのは良かったけど、なんだろうね。マルチスレッド全く知らないのでコメント出来ない…。
cygwinの持っているライブラリがバッファリングのデッドロックを起こしていたのかな。

205:204
13/02/04 21:19:57.85
ああ、>>204=>>180です。名前欄に書かないと>>204は変な文だ…

206:175
13/02/04 21:37:17.77
>>205
ありがとうございます。
もやもやだけど暫定的な回避策になりそうです!

207:デフォルトの名無しさん
13/02/04 23:42:44.44
ぷらぷらあいよりあいぷらぷらの方が言いやすいから単発で使うときは後ろ置きばっか使ってるわw

208:デフォルトの名無しさん
13/02/05 02:25:20.84
ようわからんがメソッドの引数で使う時くらいだろ
i++,++iの違いが出てくる時なんて

209:デフォルトの名無しさん
13/02/05 04:54:35.42
while(i++)
while(--i)
が多いかな
まあ、while 自体あまり使わんが

210:デフォルトの名無しさん
13/02/05 05:23:30.56
ああ、これ初心者の糞コードだな
スレリンク(tech板:1番)

> void func(a[3][3]){
が糞らしいですがなぜですか?

211:デフォルトの名無しさん
13/02/05 05:37:25.38
まちがえたから

212:デフォルトの名無しさん
13/02/05 07:17:48.11
>>209
1回回すなら

int i = 1;
while (i--) {
}

じゃないの?

213:デフォルトの名無しさん
13/02/05 08:22:35.43
>>212
i-- を使うやつは馬鹿と決まっている

214:デフォルトの名無しさん
13/02/05 08:32:44.91
>>212
ごめん、適切ではなかった

215:デフォルトの名無しさん
13/02/05 08:48:51.92
先に計算してその結果を使いたいなら前置、計算前の値が必要なら後置
どっちでもいいならC言語では好きなほうでいい

216:デフォルトの名無しさん
13/02/05 09:59:34.09
C++という名前のくせにi++より++iを推奨するC++はクソ。言語名前を変えろ。

217:デフォルトの名無しさん
13/02/05 11:39:22.54
結果としてCと変わらないソクドヲ提供しますってことだろ?

218:デフォルトの名無しさん
13/02/05 11:49:00.38
ならば
int i = 0;
while (++i&1) {}

219:デフォルトの名無しさん
13/02/05 12:38:52.09
だから++i使う奴はあほだと何べんいったら

220:デフォルトの名無しさん
13/02/05 13:38:24.23
for使えよ

221:デフォルトの名無しさん
13/02/05 13:54:32.86
>>202
ぷっ

>いれるのなら join の前にsleep かなあ‥‥‥
ならどれくらいの時間sleepすれば”確実に”スレッドが走り始めるのかなあ…
>チャイルドプロセスが走りすらしていない状況で join してしまうとどうなるのだろう‥‥‥
プロセスとスレッドの違いもわからない似非玄人は黙っとけよ

222:デフォルトの名無しさん
13/02/05 18:00:22.56
a++と++aに迷ったらアセンブラ出力してみるといい
同じになったなら好きな方にすればいい

223: ◆QZaw55cn4c
13/02/05 18:30:21.99
>>221
ふーん、createthread() と join() とはプロセスにおけるfork()とwait2() の関係をスレッドに投影したものと考えたらいいのね。
いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。

224:デフォルトの名無しさん
13/02/05 20:35:32.13
>>223
わかってねーうんこは引っ込んでろ。

> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。
> いちいち起動待ちのイベント(win32)をいれていたけれどもそんな必要はないのか‥‥‥。

225: ◆QZaw55cn4c
13/02/05 20:43:11.93
>>224
あれ、経験ない?
サブスレッドが走り出す前に親スレッドのCreateThread()がじゃんじゃんまわって、何がおこっているのかさっぱりわけわかんなくなったことがあるんだ。
そこでイベントを使ってサブスレッドが走り出すまでは次のCreateThread()にいかないようにしたんだけれども、まあそんなことしなくてもいいみたいなんだね。

わかってないのは、まあそのとおりなんだけどもね、ああごめんね posix と win32 をごっちゃに話しして。

226:デフォルトの名無しさん
13/02/05 20:48:40.19
> あれ、経験ない?
ねーよ。うんこは引っ込んでろ。

227: ◆QZaw55cn4c
13/02/05 20:51:49.33
>>226
ふーん、まあ1000個とかスレッド生成をループで連発する方もする方なんだけれどもね、でもいっぺんやってみたかったんだ。

228:デフォルトの名無しさん
13/02/05 20:55:54.69
肝コテ粘着注意

229:デフォルトの名無しさん
13/02/05 20:59:39.14
>>227
はいはい
CreateThread()でチャイルド”プロセス”たん(笑)を1000人生成して
にゃんにゃんしてればいいじゃん

230:デフォルトの名無しさん
13/02/05 21:15:23.56
問題はスレッドを1000個つくった事ではない。お前のようなうんこがプログラミングした事だ。

231: ◆QZaw55cn4c
13/02/05 21:21:45.97
>>229
あれ?プロセスとスレッドを混同したようなふうにみえるのかなあ‥‥‥チャイルドスレッド、っていういいかたがまずかったのか。にゃんにゃんしたいだけして楽しかったんはそうなんですけど。

232:デフォルトの名無しさん
13/02/05 22:35:34.27
細かい書き間違いに揚げ足とるバカに
脊髄反射するバカに

233:デフォルトの名無しさん
13/02/06 02:40:11.34
K&Rには結構 ++i の書き方が多い

234:デフォルトの名無しさん
13/02/06 08:00:49.13
それぞれの内訳はいくつだよアホ
感覚だけでモノ語るなタコ

235:デフォルトの名無しさん
13/02/06 08:24:32.22
>>232
Qzといううんこにまともに突っ込むのは愚か者。↓こういうのに対して斜めに突っ込んだ結果
> チャイルドプロセスが走りすらしていない状況で join してしまうとどうなるのだろう‥‥‥

↓更にこういう間抜けな発言が飛び出してくる。
> ふーん、まあ1000個とかスレッド生成をループで連発する方もする方なんだけれどもね、でもいっぺんやってみたかったんだ。

このうんこ本当に何にも知らずにプログラム作ってるんだな。大学の宿題レベルがちょうどいいわ。

>>234
試しにi++と++iをカウントしてみた。電子書籍は楽だな。
K&R 2ndでi++ 42件、++i 17件。
そのうち、配列のインデックスなど前置である必要があるのは2つで、残りの15はどっちでもケース。

236:デフォルトの名無しさん
13/02/06 08:31:49.52
おはよござあああああああっす

237:デフォルトの名無しさん
13/02/06 09:21:33.32
世界じゃそれをなぜ必死?と笑うんだぜ>>235

238:デフォルトの名無しさん
13/02/06 09:32:57.61
K&Rと言ってみたいお年ごろ(はぁーと)

239:デフォルトの名無しさん
13/02/06 09:35:34.83
i++; が ++i; でも i--; が --i; でも、処理に対して正しく使われていれば

どっちでも イイ!

240:デフォルトの名無しさん
13/02/06 09:43:50.06
>>237
>>233-234がたまたま目についただけで、簡単にカウントできる環境があったからカウントしただけ。

> 世界じゃそれをなぜ必死?と笑うんだぜ>>235
それを世間じゃゲスの勘ぐりと笑うんだぜ。 >>237

たぶん
> それぞれの内訳はいくつだよアホ
と煽ってみたのにあっさりカウントされて顔真っ赤なんだろう。

241:デフォルトの名無しさん
13/02/06 11:08:53.49
↑顔、真っ赤ですよ

242:デフォルトの名無しさん
13/02/06 11:12:45.42
カウントと言いたいお年頃(はぁーと)

243:デフォルトの名無しさん
13/02/06 11:17:14.83
あっさりカウントしちゃった俺カッケーまぢで
と言いたいお年ごろ草

244:デフォルトの名無しさん
13/02/06 11:23:41.26
>>237
なんかの歌詞かと思ったけど違った
電車男か・・・

245:デフォルトの名無しさん
13/02/06 11:26:01.39
煽り耐性ゼロの必死すぎる暇人とキモコテの長文コラボで
カオティックな展開になっております

246:デフォルトの名無しさん
13/02/06 11:59:44.60
>>231
pthread_create()してるのに生成したスレッドが中々スケジューリングされないって経験ならあるよ。
それが理由で、Webで散見されるpthread_mutex()のサンプルが使い物にならなくて苦労した。
まぁ、Linuxでμs単位のスケジューリングを期待しちゃダメって話なんだけど。

247:デフォルトの名無しさん
13/02/06 12:59:14.12
オープンソースのライブラリ等を使用してプログラムを作る際、
ライブラリのコードを変更することなく、ライブラリに定義されている関数の挙動を変えるにはどうすればよいでしょうか?

248:デフォルトの名無しさん
13/02/06 13:03:20.80
オーバーライドすれば?

249:デフォルトの名無しさん
13/02/06 13:20:21.02
Cでオーバーライドってできるの?

250:デフォルトの名無しさん
13/02/06 13:56:26.89
パッチを作って「こっちの方が便利(速い)」と開発者にフィードバックする。

251:デフォルトの名無しさん
13/02/06 14:07:08.52
同じ名前の関数名でコンパイルしてそれを普通にリンクすればいいのでは

252:デフォルトの名無しさん
13/02/06 14:08:31.88
Cってオーバーライド出来ないんだ

253:デフォルトの名無しさん
13/02/06 15:27:59.42
マクロでどうにかしてみる

254:デフォルトの名無しさん
13/02/06 15:45:26.48
c++のclassの関数のオーバライドはちょっと違うんじゃね

255:デフォルトの名無しさん
13/02/06 16:26:56.14
>>247
まともな回答がほしければokwaveとかY!知恵遅れあたりへどうぞ

256:デフォルトの名無しさん
13/02/06 21:23:26.14
シンボル衝突時にどっちを採用するか(またはエラーとするか)はリンカ次第じゃないの?

257: ◆QZaw55cn4c
13/02/06 21:23:56.08
>>247
>>253
#define で違う名前に変換こんな感じ
#define xmalloc(x, y) malloc(x)
#define xfree(x, y) free(x)
#define xrealloc(x, y, z) realloc(x, y)

258:デフォルトの名無しさん
13/02/06 22:21:54.62
#include <stdio.h>
void hoge(int a) {printf("OK\n");};
#define hoge(a) \
if (a==1) printf("NG1\n");\
else if (a==2) (hoge)(a);\
else if (a==3) printf("NG2\n");
int main()
{
hoge(1);
hoge(2);
hoge(3);
return 0;
}

259:デフォルトの名無しさん
13/02/06 22:24:07.41
inline使えよw

260:デフォルトの名無しさん
13/02/06 22:36:13.07
ライブラリ関数の中から呼ばれる関数はどうやって対応すんの?ってことでしょ
例えばライブラリ関数say_hello()からsay()が呼ばれるけどsay()の挙動がおかしいと。
このときsay()を自前のに置き換えるにはどうすんのかね?

261:デフォルトの名無しさん
13/02/06 22:45:08.41
オープンソース、というのだから同じく >>257 でいけばいいんじゃない?
すげかえ#define を .h にかいておき、ライブラリのすべての .c でその .h を #include

262:デフォルトの名無しさん
13/02/06 22:45:40.98
バイナリエディタでsay()の名前を変更
自作関数でsay()を作成

263:デフォルトの名無しさん
13/02/06 22:47:55.41
名前残ってないんじゃね?

264:デフォルトの名無しさん
13/02/06 22:50:59.53
ライブラリなら名前残ってるだろ

265:デフォルトの名無しさん
13/02/06 22:55:04.76
ライブラリ=so
なら残るだろうが
質問者が想定してるのはもっと広義なライブラリなきがする

266:デフォルトの名無しさん
13/02/06 22:57:35.47
patchあてろ。
まで理解した
というわけで誰かあてかた教えて

267:デフォルトの名無しさん
13/02/06 23:28:09.09
ライブラリの問題なのか俺々実装の問題なのかをよく考えませう。

268:デフォルトの名無しさん
13/02/07 00:04:44.95
バイナリをなんとかしようとするのはそもそも無理ゲーなのでは?
オープンソースっていうのだから、最小限のソース変更で切り抜ければいいのでは?

269:デフォルトの名無しさん
13/02/07 00:10:36.74
>ライブラリのコードを変更することなく、

だからなあ

270:デフォルトの名無しさん
13/02/07 00:21:56.25
じゃあリンカを改造するしかないね

271:デフォルトの名無しさん
13/02/07 01:15:54.25
置き換えたいのは標準関数なの?

272:デフォルトの名無しさん
13/02/07 04:09:21.82
UNIX系ならこんなこと出来るらしいが
URLリンク(www.ibm.com)

273:デフォルトの名無しさん
13/02/07 04:19:08.25
お引取り願いたいanyにvoid any()__declspec(selectany){...}しちまえばいいんじゃないかな
void any()__attribute(ナントカ){}とか


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch