анализировать заголовочный файл C, чтобы определить все определенные макросы - PullRequest
2 голосов
/ 02 апреля 2012

Я хочу проанализировать заголовочный файл, чтобы получить все постоянные макросы, такие как:

#define ARRSIZE 10
#define WORDSIZE 32
#define TOTALSIZE (ARRSIZE * WORDSIZE)

И создать список и массив, например:

# define XARRSIZE 0
# define XWORDSIZE 1
# define XTOTALSIZE 2

int table[] = {ARRSIZE, WORDSIZE, TOTALSIZE}
// Now, table[XWORDSIZE] will fetch value of WORDSIZE.

Итак, я хочу игнорироватьследующие:

  1. Все комментарии.
  2. Объявления структуры (C struct).
  3. extern объявления функции.
  4. typedef s.

В качестве подхода можно написать синтаксический анализатор, используя lex и yacc.Но эта задача кажется намного проще.Есть ли способ перебора всех константных макросов в заголовочном файле с помощью такого инструмента, как 'cpp'?

Пожалуйста, предложите какой-нибудь лучший подход.

1 Ответ

2 голосов
/ 02 апреля 2012

Если вы действительно хотите получить список макросов:

awk '/#define/{ print $2 }' <source.h
...