FAQ

QA・C/QA・C++

QA・C++ 特有のFAQ

ID.

Q. #if defined(new)という形式の構文は解析できないのでしょうか? QAC++2.1J以下

A.


QAC++2.3.1J以降では解析することができます。

C++言語で、new は予約語になっています。
このため、defined演算子の識別子に new 与えることはできません。#if defined(new)// ...#endifしかし、ISO C++に準拠していないコンパイラは、この構文を記述できてしまいます。
バージョン2.1J以前のQA C++はISO C++に従ってこの構文をエラーとして扱います(該当箇所には22番の警告が出力されます)が、バージョン2.3.1J以上のQAC++は機能拡張してこの構文をエラー扱いしないようになっています。

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