From: George R. <gr...@us...> - 2004-04-29 19:07:07
|
Let me rephrase my question. What caused you to investigate using _LP64? Were you getting compiler warnings and errors? I'm trying to find out what problem you are trying to solve. BTW _LP64 is usually defined by the compiler and not by a compiler user. This is one of the reasons why it has an underscore. Defining _LP64 for the compiler is rarely suggested, and it can have many unintended consequences by defining it manually, and you have just recently seen some of these consequences. George Rhoten IBM Globalization Center of Competency/ICU San José, CA, USA ICU main website: http://oss.software.ibm.com/icu/index.html Bryan Llewellyn/Falls Church/IBM@IBMUS Sent by: icu...@ww... 04/28/2004 12:53 PM To: icu...@ww... cc: Subject: Re: meaning of define _LP64 in pwin32.h George, We created classes were we overloaded a method for the 8 size integer data types (int8_t - int64_t & uint8_t - uint64_t) that ICU is using. We wanted integer constants to map to the int32_t data type on Windows. For this to happen, the int32_t data type would need to be typedef to the signed int data type. Currently, without specifying the _LP64 macro, the int32_t data type is typedef to the signed long data type. When we set the _LP64 macro to get the typedef match we want, ICU will not build on .NET. I get 100s of errors and warnings. However, if I try to build on VC++ 6.0, it builds okay. Bryan Llewellyn email: br...@us... From: George Rhoten on 04/27/2004 07:50 PM To: Bryan Llewellyn/Falls Church/IBM@IBMUS cc: icu...@ww... From: George Rhoten/San Jose/IBM@IBMUS Subject: Re: meaning of define _LP64 in pwin32.h (Document link: Bryan Llewellyn) It's not set to build 64-bit applications. It's only set when the long type is 64-bits, and the compiler will usually do this for you. For Windows, pwin32.h doesn't need _LP64, since the long type should always be 32-bits, and this #ifdef stuff was inherited from platform.h.in. You seem to be dancing around the problem. What's wrong? Why are you trying to set _LP64? Are you trying to build on Itanium or AMD64? George Rhoten IBM Globalization Center of Competency/ICU San José, CA, USA ICU main website: http://oss.software.ibm.com/icu/index.html |---------+-------------------------------------------------> | | Bryan Llewellyn/Falls Church/IBM@IBMUS| | | Sent by: | | | icu...@ww...uthbury.| | | usf.ibm.com | | | | | | | | | 04/27/2004 04:25 PM | |---------+-------------------------------------------------> >----------------------------------------------------------------------------------------------| | | | To: icu...@ww... | | cc: | | Subject: Re: meaning of define _LP64 in pwin32.h | >----------------------------------------------------------------------------------------------| George, A followup question to this. When you say ignore it, do you mean that we can not set the _LP64 macro when we build the ICU library on Windows? I tried setting it and building ICU using .NET and it wouldn't build. When I tried setting it and building ICU using Visual C++ 6.0, it built okay. Thanks for your help. I am assuming you only set this macro when you want to build 64-bit applications??? Bryan George Rhoten To: Liem G Tran/Silicon Valley/IBM@IBMUS 03/10/2004 12:13 cc: icu...@ww..., PM icu...@ww... From: George Rhoten/San Jose/IBM@IBMUS Subject: Re: meaning of define _LP64 in pwin32.h(Document link: Liem G Tran) Please ignore it. It's leftover from platform.h.in. It has no meaning for Windows. For Unix, _LP64 is defined for some systems when long is 64-bits. George Rhoten IBM Globalization Center of Competency/ICU San José, CA, USA ICU main website: http://oss.software.ibm.com/icu/index.html |---------+-------------------------------------------------> | | Liem G Tran/Silicon Valley/IBM@IBMUS | | | Sent by: | | | icu...@ww...uthbury.| | | usf.ibm.com | | | | | | | | | 03/10/2004 12:05 PM | |---------+-------------------------------------------------> >----------------------------------------------------------------------------------------------| | | | To: icu...@ww... | | cc: | | Subject: meaning of define _LP64 in pwin32.h | >----------------------------------------------------------------------------------------------| Hi, Can someone please clarify the meaning of _LP64 and its use in determining the type for int32_t ie. signed long or int We prefer to use signed int as this would cover the base of numeric constants, in function overloads. By default, it's going to signed long. So we'd like to understand the significance of the _LP64 and why would one go with long in one case and int with another. #if ! U_HAVE_INT32_T # if defined(_LP64) typedef signed int int32_t; # else typedef signed long int32_t; # endif #endif #if ! U_HAVE_UINT32_T # if defined(_LP64) typedef unsigned int uint32_t; # else typedef unsigned long uint32_t; # endif #endif Thanks, Liem(Tony) Tran Lotus Notes Address: Liem G Tran/Silicon Valley/IBM Internet Address: lg...@us... (lg...@ya...) Phone: (408) 463-5148 _______________________________________________ icu...@os... - icu4c-support mailing list To Un/Subscribe: http://oss.software.ibm.com/developerworks/oss/mailman/listinfo/icu4c-support _______________________________________________ icu...@os... - icu4c-support mailing list To Un/Subscribe: http://oss.software.ibm.com/developerworks/oss/mailman/listinfo/icu4c-support |