Можете ли вы посмотреть, где определяется typedef? - PullRequest
1 голос
/ 18 августа 2010

Можно ли искать, где определяется typedef?

Я сталкиваюсь с этой очень уклончивой проблемой, которая вызывает следующую ошибку компилятора:

/usr/include/stdint.h: At global scope:
/usr/include/stdint.h:57: error: duplicate 'unsigned'
/usr/include/stdint.h:57: error: declaration does not declare anything

, где /usr/include/stdint.h:57:

typedef unsigned int uint32_t

Мои первые мысли о том, что что-то другое определяет uint32_t, и когда stdint пытается переопределить это, выдается ошибка. Но я не знаю, как я могу проследить, где был вызван этот typedef, или даже каково текущее значение uint32_t, когда он вызывается.

Есть идеи?

1 Ответ

1 голос
/ 18 августа 2010

Вы можете получить предварительно обработанный вывод (-E на большинстве компиляторов), который даст вам полные объявления всех заголовков. В рамках этого вы можете grep для uint32_t. Это должно показать, какой заголовок вызвал дубликат typedef.

...