Pushkoff
> не будет работать, будет ошибка линковки...
ну тогда все свое загонять в немспейс
Trinimac
Напрямую (в лоб ) не получится.
Когда объявляешь свой "опасный" тип, то тут же "на месте" объявляешь и "сопутствующий" макрос.
//... // declare type and macros ... typedef int mytype; #define MYTYPE // ..... // check .. #ifdef MYTYPE // ! declare prev #else //! none decl #endif //.....
хотя удалить определение типа (как макрос #undef xxx )... низя .
Trinimac
>не поверишь но иногда бывают конфликты, когда ты пытаешься определить тип, который уже объявлен
>например у меня есть тип bitset и он объявлен как typedef unsigned int bitset
>А вот что если я подключу какую-то стороннюю либу в которой будет typedef unsigned long bitset?
... ясно
но ты же понимаешь на этапе первой сборки, что такой тип уже есть и исользуешь имеющийся, либо меняешь название своего.
что может дать использование ifdefine ... ? можно ошибиться на том что тип объявлен, свой не объявляешь, а имеющийся не подходит ...
наверное выход действительно через namespace
Неймспейсы, тысячи их.
Они хорошие.
Делай
namespace trinimac { typedef ?????? bitset; }
черт и почему Кен и Ричи не могли вместо ужасных unsigned int, signed int придумать что-нить покороче вроде uint sint :(
Trinimac
stdint.h подключай уже
Trinimac
> черт и почему Кен и Ричи не могли вместо ужасных unsigned int, signed int
> придумать что-нить покороче вроде uint sint :(
namespace you_namespace
{
typedef unsigned int u32;
typedef signed int s32;
}
Тадам
KpeHDeJIb
Подключил
fatal error C1083: Cannot open include file: 'stdint.h': No such file or directory
MATov
не хочу неймспейсы
запись аля you_namespace::u32 var ничють не лучше unsigned int var :(
Все нашел компромис
Теперь у меня в коде такая хрень:
typedef signed char xeSint8; typedef signed short xeSint16; typedef signed int xeSint32; typedef unsigned char xeUint8; typedef unsigned short xeUint16; typedef unsigned int xeUint32; typedef float xeSingle; typedef double xeDouble; typedef unsigned int xeBitset; typedef signed int xeBinary; typedef char xeAchar; typedef wchar_t xeWchar; enum xeResult { xeResult_Success = 0x00000001, xeResult_Unknown, xeResult_InvalidArguments, xeResult_InvalidOperation, xeResult_UnsupportedFeature, ... };
kvakvs
> Неймспейсы, тысячи их.
плюсец.
Trinimac
> не хочу неймспейсы
> запись аля you_namespace::u32 var ничють не лучше unsigned int var :(
ну а зачем: namespace blabla_trulala_pumpurum {....}
сделай короткое: namespace tm или tmac и всё.
у меня ks.
И ничего.. не напрягает.
Pushkoff
> не будет работать, будет ошибка линковки...
Почему? У меня работает такое...
kvakvs
> Неймспейсы, тысячи их.
> Они хорошие.
они хорошие когда в пределах десятка - а когда счёт на сотни ...
innuendo
> они хорошие когда в пределах десятка - а когда счёт на сотни ...
(доксиген && поиск к нему )
Trinimac
> Теперь у меня в коде такая хрень:
Ну вот, а только-только хотел посоветовать: "Собственный префикс, тыщи их (а точнее, только один). Они хорошие, значительно лучше неймспейсов." :)
ksacvet777
> > они хорошие когда в пределах десятка - а когда счёт на сотни ...
> (доксиген && поиск к нему )
имеется ввиду когда кодишь - то 100-500 namespaces убивают желание что-либо делать дальше :)
Тема в архиве.