C言語なら俺に聞け! Part 63

このエントリーをはてなブックマークに追加
関数ポインタの書式は汚いからな!
signal関数なんかtypedefしないとhttp://www.bohyoh.com/CandCPP/C/Library/signal.htmlこんなになっちまう
>>951
変数の宣言文と同じ風に書いて、頭に typedef を書く、
というのが typedef の文法。
typedef void (*sigh_t)(int);
sigh_t signal(int sig,sigh_t func);

typedefすればこれだけ見やすくなる。
>>953
なるほど、そう言われれば簡単に理解できそうな...
大抵の本には、「前に書いた型にあとに書いた別名をつける」みたいな事が
書いてありますけど、あれじゃ >>936 は理解できませんな。

説明thx!


そういえば配列を表す型ってのも
typedef int array_t[10]; こうかくな。関数定義の頭にtypedefか。
957956:03/08/25 11:31
関数定義じゃなくて変数定義
#include <stdio.h>

void (*(*foo3(void (*fp)(void (*)(int))))(void (*)(int)))(int);

typedef void (*FP1)(int);
typedef void (*FP2)(FP1);
typedef FP1 (*FP3)(FP1);

void foo0(int n ) { printf("%d\n", n); }
FP1 foo1(FP1 fp) { return fp; }
void foo2(FP1 fp) { fp(2); }
FP3 foo3(FP2 fp) { fp(foo0); return foo1; }

int main(void)
{
foo3(foo2)(foo0)(4);
return 0;
}
>>955
大抵の本の作者はtypedefをそこまで使い込めてないか、
説明放棄しているか、孫引きしているからだね。

>953みたいに現場で使い込んでいる奴の説明は、
端折っているように見えて実は分かりやすいね。
#参考にさせてもらおう。
あー、疲れた。
そういえば、Linuxの開発MLでも、「C++でカーネル書き直そうよ」
っていう厨房がたまに出没するなあ。
>>960
BNFくらい(ry
「Cで初めて書かれたプログラム」とか「すごいハカーの作品」とかは、骨董・作品
Cという言語そのものは、美術で言えば、水彩画・油絵といった、道具・手段
プログラムは、年代によって変化する、技術・技法
>>964
ぜんぜんわからん
一体それの何をCのどこに比喩しかったんだ?

# 漏れは16年目のC++屋だが
966デフォルトの名無しさん:03/08/25 22:12
void ClearCanvas(int w, int h, int col, int *cnv){
int *p;
int *max = cnv+(w*h);

for(p=cnv; p<max; p++){
*p=col;
}
}

colで領域を埋めるんですが、遅いんです。
100倍速にするにはどうすればいいですか?
> 100倍速にするには

for(p=cnv; p<max; p+=100) {
*p=col;
}
>>967
ワラタ
>>966
めむこぴーだ!
>>966
void ClearCanvas(int w, int h, int col, int *cnv)
{
#if UINT_MAX != 0xFFFFFFFFu
#error その CPU/コンパイラ 用のコードに変えてね
#endif
 __asm {
  mov ecx, w
  mov edx, h
  imul ecx, edx
  mov eax, col
  mov edi, cnv
  rep stosd
 }
}
971デフォルトの名無しさん:03/08/26 00:16
VCインストールしたらcygwinでのコンパイルですべてヘッダファイル参照できなく
なりました。どうしたら回避できますか?
972デフォルトの名無しさん:03/08/26 00:28
INCLUDEって環境変数。かもしれない
973デフォルトの名無しさん:03/08/26 00:40
INCLUDE禍しるみたいです。そこでVCのLIBフォルダへのパスを退避させて
試してみたのですが、それでもだめでした・・・
タダ単にcygwinがおかしいみたいです。お門違いですが、gccが参照する
ヘッダファイルのパスが書いてある設定ファイルは何かとかどなたか教えてください。
974デフォルトの名無しさん:03/08/26 00:58
/usr/include /usr/local/include
あと-Iオプション
のような気がします
gcc -v
976966:03/08/26 01:07
>>969-970
ありがとうございます。すこし速くなりそうです。
977デフォルトの名無しさん:03/08/26 01:10
>>970
ediってなに?
978973:03/08/26 01:12
#include "..." search starts here:
#include <...> search starts here:
/usr/include/w32api
/usr/lib/gcc-lib/i686-pc-cygwin/3.2/include
/usr/include
End of search list.
client.c:10:21: stdio.h : No such file or directory
client.c:11:22: string.h : No such file or directory
client.c:12:25: sys/types.h : No such file or directory
client.c:13:26: sys/socket.h : No such file or directory
client.c:14:22: sys/un.h : No such file or directory
client.c: In function `main':
client.c:20: storage size of `addr' isn't known
client.c:31: `PF_UNIX' undeclared (first use in this function)
client.c:31: (Each undeclared identifier is reported only once
client.c:31: for each function it appears in.)
client.c:31: `SOCK_STREAM' undeclared (first use in this function)
client.c:44: `AF_UNIX' undeclared (first use in this function)
client.c:60: `stdin' undeclared (first use in this function)

・・・/usr/includeみてますね・・・・でも見つからないっていいます・・・
謎だ・・・
979デフォルトの名無しさん:03/08/26 01:34
わしもわからんので
”cygwin + mingwn + gcc 相談室”
ってのにいってみたら?
980デフォルトの名無しさん:03/08/26 01:56
1000
>>977
デスティネーション インデックス レジスタ。
movsb とか stosb とかの出力アドレスを指定するのに使えるけど、
普通の 32/16 ビットレジスタとしても使える。
埋め立てしないの?
んじゃ、埋め立てスタート〜
984
985
Intel 9x86 Family?
987デフォルトの名無しさん:03/08/27 11:24
>>986
コプロセッサの i987
(すまん、埋め立てなのに上げてしまった)
Intel Pentium VII 989GHz
990次スレ案内:03/08/27 11:57
C言語なら俺様に聞け! Part 64
http://pc2.2ch.net/test/read.cgi/tech/1061779941/l50
991次スレ案内:03/08/27 11:58
C言語なら俺様に聞け! Part 64
http://pc2.2ch.net/test/read.cgi/tech/1061779941/l50
992次スレ案内:03/08/27 11:58
C言語なら俺様に聞け! Part 64
http://pc2.2ch.net/test/read.cgi/tech/1061779941/l50
993次スレ案内:03/08/27 11:58
C言語なら俺様に聞け! Part 64
http://pc2.2ch.net/test/read.cgi/tech/1061779941/l50
994次スレ案内:03/08/27 11:59
C言語なら俺様に聞け! Part 64
http://pc2.2ch.net/test/read.cgi/tech/1061779941/l50
記念カキコ v(^-^*)
(*^o^)ノシ 996だよ
997名無し:03/08/27 12:45
記念カキコ v(^-^*)
998名無し:03/08/27 12:45
記念カキコ v(^-^*)

999名無し:03/08/27 12:45
記念カキコ v(^-^*)







1000デフォルトの名無しさん:03/08/27 12:45
1
10011001
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。