crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> как избавиться от / "обнулить" пространство имён?
Litkevich Yuriy
  опции профиля:
сообщение 14.1.2014, 12:10
Сообщение #1


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Есть много кода, где используется пространство имён описывающее используемую библиотеку, например:
Lib::Type var;

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

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

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

П.С.
Два толстых куска кода достались от студийного компилятора из разных проектов в одном доступ был непосредственный, а в другом через пространство имён. Но по логике их работы им следует быть в одном месте.
в частности пространство имён введено автоматически.
Как я понял это расширение студийного компилятора - директива import:
#import "Path\to\lib\lib.dll" rename_namespace("Lib")
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 14.1.2014, 13:10
Сообщение #2


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


А чем не устраивает:
using namespace Lib;
???
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.1.2014, 14:26
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 14.1.2014, 15:10) *
А чем не устраивает:
дак ведь оно не определено.

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

2 Кусок:
Type var;


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

И я подумал нельзяли как-нибудь компилятору сказать, чтобы он на пространство имён Lib внимания не обращал.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 14.1.2014, 15:04
Сообщение #4


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


Не сразу тебя понял...

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

// 2 Кусок

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

После чего все будет работать...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 14.1.2014, 18:44
Сообщение #5


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9669
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(ViGOur @ 14.1.2014, 17:04) *
Как я понимаю, обы куска ты где-то взял и совместил вместе, правильно?
Именно, они оба от разных проектов разных людей, объединяет их только то что они от МС Студии 2010
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Iron Bug
  опции профиля:
сообщение 15.1.2014, 0:35
Сообщение #6


Профессионал
*****

Группа: Модератор
Сообщений: 1611
Регистрация: 6.2.2009
Из: Yekaterinburg
Пользователь №: 533

Спасибо сказали: 219 раз(а)




Репутация:   12  


можно тупо сделать так.
#define Lib::

только убедиться, что это не затронет какие-то другие возможные случайные совпадения.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
ViGOur
  опции профиля:
сообщение 15.1.2014, 8:45
Сообщение #7


Мастер
******

Группа: Модератор
Сообщений: 3296
Регистрация: 9.10.2007
Из: Москва
Пользователь №: 4

Спасибо сказали: 231 раз(а)




Репутация:   40  


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

Но лучше мой способ...
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 18.4.2024, 5:22