【訃報】C言語およびUNIXの父、デニス・リッチーさんが死去 -享年70★3
>>941 cfront じゃなく、EDGじゃね?
g++は違うけど、VCもComeauもBorlandも
中身のパーサーは、EDGフロントエンドだけど
やっぱり C 論議になってるw
ジョブスみたいに詐欺師に夢を見させただけの奴よりよっぽど世界に貢献した人だろう。
K&Rの人か
今、あの頃(ANSI C以前)のソースみると関数の引数の書き方とか軽く眩暈がする
K&Rスタイルって
int main(argc, argv)
int argc
char ** argv
{
}
みたいに書くやつ?
書いたことないな。仕事で見たことは・・あるかな〜?
あの形式のメリットとしては
int foo(a,b,c,d,e,f)
int a,b,c,e;
float d,f;
{
}
とかできるんじゃなかったっけ?
957 :
名無しさん@12周年:2011/10/16(日) 02:41:20.62 ID:9KpBOIcv0
おいおい、ここはジジイの集会場かよw
ライフボートとかいつの時代だ。 まだあんのか?
あの会社。
ライフボートって名前久々に見たな。
パーティション管理のソフト出してた会社だよな。
>>951 え?* って、delimiter じゃなかったの?
962 :
名無しさん@12周年:2011/10/16(日) 03:10:22.09 ID:wkAvY17a0
>>961 デリミタは区切り文字
char*a はいかなるコンパイラーでもエラーなので区切り文字ではないだろ。
char *a しか許されない処理系があったと記憶している。TurboCだったかccだったか忘れたが。
つか、charと*の間でトークンの区切りが入るから
スペースの有り無しでコンパイラがエラー出すのは
明らかにコンパイラがおかしい。
964 :
名無しさん@12周年:2011/10/16(日) 03:18:07.96 ID:wkAvY17a0
いやだからchar*aはエラー。ゆえにcharと*の間に区切りは入っているとは限らない。
そんな細かいこと気にすんなよ
>>962 字句解析だと ( ) とかは、delimiter って言うけどね。
Python の仕様書見たら、演算子は delimiter じゃないから、
* は、delimiter じゃないってみたいだ。
いや、レキサの段階でそこでトークンがわかれるだろ。
スペースは区切り認識された後読み飛ばされるだけ。
だから、パーサ以降は本来スペースの有り無し自体
認識不可能なはず
当時のANSIじゃそこまで規定されていなかったの?
968 :
266:2011/10/16(日) 03:24:40.28 ID:ZW2he9IB0
分かった。
** とか、*= とかがあるから、* は、delimiter にできないのね。
char*a が char * a というわけではない。ということは、理解した。
文法エラーかどうかは、分からん。
969 :
出世ウホφ ★:2011/10/16(日) 03:26:51.52 ID:???0
>>967 確かに、* が delimiter で無かったとしても、parser に渡される token が、
char * a; でも、 char*a; でも、
<CHAR> <*> <ID> <;> だから、構文上は等価にならなきゃおかしい。
972 :
名無しさん@12周年:2011/10/16(日) 03:30:56.85 ID:wkAvY17a0
>>967 パーサーの内部の事情はわからんが、実際コンパイルすれば解る事。
char*a は古今東西いかなるコンパイラーでもエラー。
973 :
名無しさん@12周年:2011/10/16(日) 03:35:05.23 ID:wkAvY17a0
と思ってgccでコンパイルしてみたらエラーじゃなかった><
すまんwww
既に、dmr追悼スレじゃなくて、C言語スレになってんのに、次スレ要るの?
char* a, b;
の解釈は確かにわかりにくいとは思う。
でchar* aがエラーになる処理系があったという俺の記憶もなにか疑わしくなってきたなwww
ぬるぽ
979 :
名無しさん@12周年:2011/10/16(日) 03:51:51.73 ID:wkAvY17a0
まあ20数年前に使ってたのはTurboC MS-C cc gcc 辺りで正直どれがどれなのか覚えてない。
c = a+++++b;
なら今のgccでもエラーになったり
981 :
名無しさん@12周年:2011/10/16(日) 03:56:23.01 ID:wkAvY17a0
といっても俺ジジイでボケたわけじゃないから今30代だし。
int main() {
return main();
}
983 :
名無しさん@12周年:2011/10/16(日) 04:03:11.75 ID:a4eOARs60
大物の訃報が続くなあ・・・
ありがとうジョブズ
ありがとうリッチー
ありがとう柳ジョージ
。・゚・(ノД`)・゚・。
984 :
名無しさん@12周年:2011/10/16(日) 04:13:36.39 ID:I0J9Pmyj0
>>898 int a[100]
と int *b
はまったく意味が違うだろう
charならともかく
**b では一次元目が100個ということが解らないから
b[5][5]としても位置の決めようがない
最後の次元はアバウトでもいいかもしれないが、
型までコピーされるわけじゃないんだから、
int b[100]型が100個ということを教えてやらないと当惑する
配列とポインタの宣言をごっちゃにしてはいけませんよ。
>>953 お前みたいな的外れな叩きしかできないクズになんでジョブズが詐欺師扱いされなきゃならんのだ
990 :
名無しさん@12周年:2011/10/16(日) 06:15:11.89 ID:bNtczvau0
食い残すなよ行儀悪い
すでに既出だった
>>942 そんな糞構文を許容したのがそもそもの大間違い。
一行一宣言が鉄則。
char *a;
でなく
char* a;
って書けばいいじゃん、ってのは、初心者のうちはいいかもしれないが、
int (*a)(int n);
のようなコードがいつまでたっても読めなくなるおそれがある。
だから早いうちに前者のほうに慣れておいたほうがいい。
995 :
名無しさん@12周年:2011/10/16(日) 09:26:42.53 ID:loB0GI2E0
次はビルゲイツか? ついでに禿シャスティスも連れて行けw
型 *名前; という宣言を見た時、
「名前をdereferenceすれば型のオブジェクトになる」
という宣言だと考えれば複雑なやつも全部わかると思うんだけどな。
型の側に*を付けるのは逆にわかりづらい。
997 :
名無しさん@12周年:2011/10/16(日) 10:00:59.57 ID:pMV/PJVi0
>>994 それはウソを作る温床。
C++の教祖もそれを勧めているけど
char* a, b
ってやる間違いを生む。
998 :
名無しさん@12周年:2011/10/16(日) 10:02:49.42 ID:k15bNYte0
埋め
>>994 >int (*a)(int n);
なんだこの意味不明なたわごとは?
>>997 その書き方なら、aもbもchar*型にすればいいんじゃね?
char *a, b;
なら、bはchar型にする。
ってか、そもそも宣言に,を許容しなきゃいいだけ。
1000 :
名無しさん@12周年:2011/10/16(日) 10:07:16.84 ID:pMV/PJVi0
>>999 そんなこと無いよ。
大きなコード書いてみ?
1001 :
1001:
このスレッドは1000を超えました。
もう書けないので、新しいスレッドを立ててくださいです。。。