Tatsuya Asano wrote:
> '定数'でなくてはならないと思いまして static かつ const で指定
> しました。これでは定数にはならないのでしょうか?

 「書き換えできない変数」であって、「定数(イミディエイト値)」
ではないということでしょう。

 厳密に言えば違いますが、高度に最適化してしまえば同じものと
言えるのかもしれません。

> ファイルが別れている場合、コンパイル時には static で const である
> クラス変数の値はわからないのでしょうか?

 staticかどうかとか、constかどうかとは関係なく、コンパイル
対象となるソース(インクルードファイルを含む)中に値が記述され
てない以上、コンパイル時には解決しないでしょう。

> 最初のメールでも記述した通りに Cygwin に付属の g++ では
> コンパイル・実行は正常に行えましたが、これはコンパイラの
> 違いなのでしょうか?

 コンパイル時にソース中で定義されていなかった値は、自動的に
外部定義という扱いになるんじゃないですか?

 Cygwinのg++って、アセンブラソースを出力するプリプロセッサじゃ
ありませんでしたっけ? Intel(MASM)表記的に言えば ...

A0.ASM ____________________________________

PUBLIC  __A0@MAX_BUFF_LEN

_A0@MAX_BUFF_LEN DD 256

A1.ASM ____________________________________

EXTERNDEF  __A0@MAX_BUFF_LEN:DWORD

_A1@func PROC
    PUSH    EBP
    MOV     EBP,ESP
    MOV     EBX,OFFSET32 _A0@MAX_BUFF_LEN
    MOV     EBX,[EBX]
    SUB     ESP,EBX
    NEG     EBX
    MOV     EBX,[EBP-EBX] ; &buf
    ...

ってな感じのソースが出力されてるのでは?

「MAX_BUFF_LEN」が定数(イミディエイト値)なら ...

A0.ASM ____________________________________

PUBLIC  __A0@MAX_BUFF_LEN

_A0@MAX_BUFF_LEN EQU 256

A1.ASM ____________________________________

EXTERNDEF  __A0@MAX_BUFF_LEN:ABS

_A1@func PROC
    PUSH    EBP
    MOV     EBP,ESP
    SUB     ESP,_A0@MAX_BUFF_LEN
    MOV     EBX,[EBP-_A0@MAX_BUFF_LEN] ; &buf
    ...

ってな感じのソースが出力されるはずです。

+---------------------------------------------------------------------+
| From : Dairyo Gokan ( 後神 大陵 )                                   |
| Org. : Hitmark Computer Corporation ( ヒットマークコンピュータ )    |
| Adrs : 13256 Northup Way Suite 3, Bellevue WA 98005                 |
| TEL:425-649-8808  FAX:425-649-9001  mailto:n...@can.bekkoame.ne.jp  |
+---------------------------------------------------------------------+