2 階層以上の場合は次のような文法誤りとなります。
simple.h: At global scope: simple.h:29: error: declaration of `box*fox::box' simple.h:7: error: changes meaning of `box' from `struct box' simple.h:30: error: syntax error before `*' token
この例は「階層モジュール」の項目で使った例の box1 を box と いう名前に変えて make した時のものです。
トレースのときに階層参照が面倒になる
コンパイラのメッセージでは判別困難