FAQ

QA・C/QA・C++

QA・C++ 特有のFAQ

ID.

Q. sizeof intという形式の構文は解析できないのでしょうか? QA・C++ の全バージョン

A.


ISO C++違反の構文であるため解析することができません。理由は次の通りです。

sizeof演算子は次の3種類の形式で使用することができます。1. 括弧'()'を使ってオペランドに型名を与える形式 size_t size; size = sizeof(int);2. 括弧'()'を使ってオペランドにオブジェクト名を与える形式 int obj; size_t size; size = sizeof(obj);3. 括弧'()'を使わずにオペランドにオブジェクト名を与える形式 int obj; size_t size; size = sizeof obj;しかし、3番目の形式と似ていますが、次の形式は使用することができません。4. 括弧'()'を使わずにオペランドに型名を与える形式 int obj; size_t size; size = sizeof int;しかし、ISO C++に準拠していないコンパイラは、3番目の形式と4番目の形式を 適切に区別しないので4番目の形式の構文を記述できてしまいます。
QA C++はISO C++に従ってこの構文をエラーとして扱います(該当箇所には14番の警告が出力されます)。
ISO C++に準拠していないコンパイラであっても4番目の形式では、括弧'()'を記述しなかった場合と記述しなかった場合とで文法的な意味は変わらないので、恐れ入りますが、ソースコード側を修正して解析できるようにしてください。

<< QA・C++ 特有のFAQに関するFAQ一覧へ戻る