Может ли GCC создавать несоответствия имени структуры / класса, как VS? - PullRequest
7 голосов
/ 19 апреля 2011

Я бы хотел, чтобы GCC выдавал предупреждение, которое VisualStudio выдает, когда находит имя, которое было объявлено как с class, так и с struct.(Предупреждение 4099) Обычно это происходит из-за предварительных объявлений, таких как:

struct Base;
...
class Base { ... };

VS на самом деле не удается связать в этом случае, поэтому я повысил предупреждение до ошибки.Поскольку этот проект является кроссплатформенным, я хотел бы также обнаружить эту проблему при компиляции с GCC - в противном случае я могу случайно проверить код, который не будет работать в VS.

Есть ли какой-либо переключатель или метод,чтобы заставить GCC также отклонить или предупредить о таких несоответствиях объявления класса / структуры?

ПРИМЕЧАНИЕ: Из комментариев неясно, является ли это предупреждение допустимым.На мой вопрос это не актуально, так как это условие вызывает сбой связывания в VisualStudio (я не могу просто проигнорировать предупреждение).Поэтому я просто хотел бы определить проблемы с помощью GCC, чтобы мои компиляции Windows не перестали работать внезапно.


ОТВЕТ: Похоже, решения не найдено.

Ответы [ 2 ]

3 голосов
/ 19 апреля 2011

gcc не заботится о разнице. Itanium ABI искажает class и struct одинаково, оставляя их как чистую синтаксическую разницу.

У Clang есть -Wmismatched-tags для активации этого обнаружения, но я не смог найти эквивалент gcc (если есть).

0 голосов
/ 19 апреля 2011

Какую версию VC ++ вы используете. В VC ++ 6.0 произошла ошибка, из-за которой он по-разному обрабатывал struct и class, но это было исправлено в более поздних компиляторах; Я не получаю никаких предупреждений с VC ++ 2005, например.

...