Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как избавиться от / "обнулить" пространство имён?
Форум на CrossPlatform.RU > Разработка > С\С++
Litkevich Yuriy
Есть много кода, где используется пространство имён описывающее используемую библиотеку, например:
Lib::Type var;

И есть код (заголовочник), где объявлены все эти Type библиотеки, но без пространства имён.
Можно ли как-то избавиться от пространства имён Lib, не правя кучу кода?

Я знаю, что можно сделать так:
namespace Lib {
# include "header.h"
}

Но может есть и другой вариант?

П.С.
Два толстых куска кода достались от студийного компилятора из разных проектов в одном доступ был непосредственный, а в другом через пространство имён. Но по логике их работы им следует быть в одном месте.
в частности пространство имён введено автоматически.
Как я понял это расширение студийного компилятора - директива import:
#import "Path\to\lib\lib.dll" rename_namespace("Lib")
ViGOur
А чем не устраивает:
using namespace Lib;
???
Litkevich Yuriy
Цитата(ViGOur @ 14.1.2014, 15:10) *
А чем не устраивает:
дак ведь оно не определено.

Имеются два огромных куска в одном файле
1 Кусок имеет вид:
Lib::Type var;

2 Кусок:
Type var;


Но пространства имён Lib нет (компилятор ругается), мне не хочется всюду в первом куске исправлять на
Type var;
.

И я подумал нельзяли как-нибудь компилятору сказать, чтобы он на пространство имён Lib внимания не обращал.
ViGOur
Не сразу тебя понял...

Как я понимаю, обы куска ты где-то взял и совместил вместе, правильно?
Если так, то для второго куска тебе нужно просто сделать обертку, вроде:
#ifdef MY_LIB
namespace Lib {
#endif  // MY_LIB

// 2 Кусок

#ifdef MY_LIB
}
#endif  // MY_LIB
Ну и добавь в
#define MY_LIB
в заголовочник, где объявлена твоя Lib

После чего все будет работать...
Litkevich Yuriy
Цитата(ViGOur @ 14.1.2014, 17:04) *
Как я понимаю, обы куска ты где-то взял и совместил вместе, правильно?
Именно, они оба от разных проектов разных людей, объединяет их только то что они от МС Студии 2010
Iron Bug
можно тупо сделать так.
#define Lib::

только убедиться, что это не затронет какие-то другие возможные случайные совпадения.
ViGOur
Как вариант, что предложила Iron Bug, но это нужно использовать аккуратно, так как может выйти боком...

Но лучше мой способ...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.