下記の件につきまして、
解決策や代替案、その他何らかの知見等ございましたら、お教えいただけないでしょうか。
前提・実現したいこと
define や undef、ifdef、コメント(// や /* */) が乱立しているソースコードを含むプロジェクト上から、
有効なマクロの一覧を取得したいです。
※下記のようなファイルがプロジェクト上に複数あるイメージです。
cpp
1/* macro.h */ 2#define MACRO_A 3#define MACRO_B 4#define MACRO_C 5#define MACRO_D 6 7#undef MACRO_B 8 9#ifdef MACRO_A 10#define MACRO_A1 11#endif 12 13/* #define MACRO_E */ 14// #define MACRO_F 15/* #define MACRO_G 16*/ 17/* 18#define MACRO_G*/ 19/* 20#define MACRO_H 21*/
cpp
1/* sample.c */ 2#include "macro.h" 3 4#undef MACRO_C 5 6#ifdef MACRO_A1 7#define MACRO_A2 8#endif 9 10#ifndef MACRO_B 11#undef MACRO_D 12#define MACRO_A3 13#endif 14
上記の場合、以下のように有効なマクロの一覧が取得したいです。
MACRO_A MACRO_A1 MACRO_A2 MACRO_A3
発生している問題
gcc や clang で -dM オプションを利用するように、
定義済みのマクロの一覧を取得したいのですが、
Visual C++ (Visual Studio 2010) で同様のことを実現する方法が見つかりませんでした。
(参考)
知っていると便利な gcc のオプション
gcc のプリプロセッサの定義済みマクロ(Predefined Macros)の確認方法 - Qiita
試したこと
正規表現を使って、有効な define を絞り込もうとしましたが、
ifdef や undef や /* */ により、
有効なマクロのみを絞り込むことができませんでした。
補足情報(FW/ツールのバージョンなど)
IDE:Visual Studio 2010
言語:Visual C++
生成物:DLL(ActiveX コントロール)