пространство имен над вопросом о файле заголовка #include

Я переношу код с машины Windows на Mac. Я использую OS X 10.6 с Xcode 3.2.5.

У меня есть заголовочный файл с именем api.h, который имеет следующий код:

namespace ocip {
    #include "onan/ocip/ocip.h"
}

ocip.h включает #include stdint.h
, который имеет следующее определение типа:

 typedef unsigned int         uint32_t;

Теперь вернемся к api.h. У меня есть класс со следующим:

ocip::uint32_t m_nMode;

Компилятор сообщает мне, что uint32_t в пространстве имен ocip не называет тип.

Любые идеи, что я делаю неправильно?


person Michael Wildermuth    schedule 25.07.2011    source источник


Ответы (1)


Не знаю, поможет ли это, но может быть уже объявлен тип "uint32_t". Если вы включаете «stdint», уже существует typedef с таким же именем. Это может вызвать проблему с переопределением в opic.h.

person Chris    schedule 25.07.2011
comment
Я только что понял, что пропустил это ключевое слово в своем вопросе, ocip.h включает stdint.h, что, как я надеялся, будет ocip:: uint32_t. Означает ли это, что если я включаю stdint.h, я не могу использовать пространство имен вокруг него, как я пытаюсь в вопросе? - person Michael Wildermuth; 26.07.2011
comment
Все внутри stdint находится в пространстве имен std. Попробуйте ocip::std::uint32_t, но я думаю, вам, возможно, придется переместить #include за пределы объявления пространства имен (перед ним), а затем использовать пространство имен std - person Chris; 26.07.2011
comment
Не похоже, что uint32_t не находится в пространстве имен std, поскольку std::uint32_t не работает с ocip:: перед ним или без него или с использованием пространства имен std; Когда я смотрю на stdint.h, в нем также нет пространства имен. Все еще кажется, что ocip::uint32_t должен работать, но это не так. - person Michael Wildermuth; 26.07.2011
comment
Ты прав. У вас небольшая опечатка? Я понимаю, что это звучит глупо, но: daniweb.com/software-development/cpp/ темы/215315 - person Chris; 26.07.2011
comment
На самом деле это может помочь: stackoverflow.com/questions/1204118/ - person Chris; 26.07.2011
comment
@MichaelWildermuth позвольте нам продолжить это обсуждение в чате - person Chris; 26.07.2011