Как сделать «неоднозначный символ» уникальным с VS 2008 - PullRequest
0 голосов
/ 07 июня 2011

У меня есть некоторые проблемы с операторами #define в моем коде C ++, однако я не знаю, как с этим справляться в VC ++:

>filetaint.cpp
1>.\filetaint.cpp(272) : error C2872: 'UINT32' : ambiguous symbol
1>        could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\basetsd.h(82) : unsigned int WIND::UINT32'
1>        or       '..\..\include\gen\types_foundation.TLH(80) : LEVEL_BASE::UINT32'
1>.\filetaint.cpp(275) : error C2872: 'UINT32' : ambiguous symbol
1>        could be 'C:\Program Files\Microsoft SDKs\Windows\v6.0A\\include\basetsd.h(82) : unsigned 
[...]

========== Сборка:0 успешно выполнено, 1 не выполнено, 0 обновлено, 0 пропущено ==========

Таким образом, проблема в том, что компилятор не знает, использовать ли определение измой Windows SDK "basetsh.h или from types_foundation.h. Я хочу, чтобы он использовал последний. Есть ли какая-либо конструкция в пространствах имен C ++, чтобы сказать компилятору, что выбрать? Я хочу избежать исправления SDK или самой библиотеки.

#include "filetaint.h"
#include "dift.h"

using namespace WIND;

В types_foundation.TLH содержится правильное утверждение. Оно уже есть в путях VC ++ в VS 2008. Я немного запутался здесь ... но, наверное, мне нужно найти способ рассказатькомпилятор, который пока игнорирует SDK;).

Ответы [ 3 ]

5 голосов
/ 07 июня 2011

Я хочу использовать последний.

Затем уточните свое использование с именем пространства имен: LEVEL_BASE::UINT32.

Либо удалите директивы using из своего кода и укажите все имена, которые вы используете в библиотеках. В большинстве случаев рекомендуется избегать использования директив: это гораздо больше проблем, чем стоит.

1 голос
/ 07 июня 2011

Да.

Напишите полностью полное имя с его пространством имен вместо того, чтобы полагаться на то, что компилятор волшебным образом выберет подходящее для вас:

LEVEL_BASE::UINT32

Я что-то здесь упускаю

0 голосов
/ 07 июня 2011

Определите его явно с именем пространства имен, где бы вы его не использовали.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...