FAQ

QA・C/QA・C++

ツール(操作)に関する

ID.11

Q. プロジェクトマクロやシステムマクロに文字列を渡すことはできますか?


次のようなコードで、#includeのファイル名は、コンパイルするときに -Dオプションを使用して指定しています。

#include HEADER1

コンパイラ・パーソナリティやアナライザパーソナリティのマクロ設定で、"header.h"と指定しても、header.h だけになってしまいます。
"header.h" を設定することはできないのでしょうか?

A.


QAC Version4.5.3J以降やQAC++1.5J以降の場合、次のように設定することで、文字列を渡すことができます。

_PRL_STRINGFY(x)=#x
MACRO=_PRL_STRINGFY(string)
(注:_PRL_STRINGFYは任意の文字列が使用できます)

この設定で、ソースコードの中に書かれたMACROは"string"に置換されます。


#include MACRO → #include "string"
char *p = MACRO ; → char *p = "string" ;

Versionに関係なく使用できるのは、「追加インクルード(あるいは強制インクルード)」で指定する方法です。
次の定義をした解析用のヘッダファイルを作成し、-FIオプションで指定します。

#define MACRO "string"

「追加インクルード(あるいは強制インクルード)」をGUIで設定するには、コンパイラパーソナリティ(以前のバージョンはアナライザパーソナリティ)で行います。

解析用のヘッダファイルの中には、文法的に許されるすべてのコードを記述することができます。
ビルトイン関数、ビルトインマクロ、あるいは、特殊なキーワード(レジスタ名など)を 宣言しておけば、より正確な解析結果を得ることができます。


<< ツール(操作)に関するに関するFAQ一覧へ戻る