e20.c

&register不可
 /*###17 [cc] 警告: AAA:e20: &register不可: %%%*/
	#include	<stdio.h>
static  void    func(char *     p)
{
        p[0] = 0x12 ;
        p[1] = 0x34 ;
        p[2] = 0x56 ;
        p[3] = 0x78 ;
}
int     main()  {
        register        char    buf[4] ;
        buf[0] = 0 ;
        buf[1] = 1 ;
        buf[2] = 2 ;
        buf[3] = 3 ;
        func(&buf[0]) ;
        return(0) ;
}


解説 昔、コンピュータが遅かった頃、少しでも、早くプログラムを動かそうと register変数が生まれました。 しかし、register変数には、アドレスは無いのでした(メモリ上にないので) このコーディングをしても、優しい、コンパイラは 静かに、黙って、正しいコードを生成してくれます。 詳細な説明は、 プログラミング言語C 第2版 ANSI規格準拠 カーニハン リッチー著/石田晴久訳』 「付録C」Page329 を参照して下さい。 詳細な説明は、 C-FAQ 20.13J C-FAQ 20.13E を参照して下さい。