C言語なら、俺に聞け! <13>
■ このスレッドは過去ログ倉庫に格納されています
0759752
NGNG_strlen(char* ptr){
int i;
for(i=0;*ptr;++ptr,++i);
return i;
}
のような場合、
strlen(char* ptr){
#if isLiteral(ptr)
size_t n = _strlen(value_of(literal));//
OUTPUT "mov reg <- %d", n
#else
OUTPUT "push ptr"
OUTPUT "call _strlen"
#endif
}
っていうのが、関数ごとにコード生成ルーチンを持っている例だとすると、
strlen(x[0]:x[1]: .. :x[n]){
return n;
}
が、「コンパイラが文字列の長さをかえすことを知っている」ってところでしょか。
こんな感じのが、「実装ではなくて、宣言として」書ける(Cの構文でなくて、
コンパイラのコード生成情報として)っていうようなのを想像してます。
ほかにも、再帰を使って定義するとか・・・
(スレ違いのうえに、電波っぽくなってきたぞ…
つか、電波だな、ゴメソ)
■ このスレッドは過去ログ倉庫に格納されています