[Insight-developers] Re: MacOS Warnings 64bits to 32bits truncation : At end of Files ???

Mathieu Coursolle mcoursolle at rogue-research.com
Mon Jan 28 13:33:17 EST 2008


Hi,

I've build ITK in 64 bits and could repro those warnings.

Ex:

/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/bits/
basic_string.h: In member function 'int std::basic_string<_CharT,
_Traits, _Alloc>::compare(const std::basic_string<_CharT, _Traits,
_Alloc>&) const [with _CharT = char, _Traits = std::char_traits<char>,
_Alloc = std::allocator<char>]':
/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/bits/basic_string.h:
2116:   instantiated from 'bool std::operator==(const
std::basic_string<_CharT, _Traits, _Alloc>&, const
std::basic_string<_CharT, _Traits, _Alloc>&) [with _CharT = char,
_Traits = std::char_traits<char>, _Alloc = std::allocator<char>]'
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/Common/
itkExceptionObject.h:104:   instantiated from here
/Developer/SDKs/MacOSX10.5.sdk/usr/include/c++/4.0.0/bits/basic_string.h:
1921: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
At global scope:
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1537: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1538: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1538: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1538: warning: implicit conversion shortens 64-bit value into a 32-bit value
/Volumes/Extra/Kitware/ITK/Latest/Insight/Code/IO/itkAnalyzeImageIO.cxx:
1538: warning: implicit conversion shortens 64-bit value into a 32-bit value

From what I see, this function from Apple headers seems to be the guilty
piece of code.
__size is 64 bits in 64 bits architectures, while __r is 32:
basic_string.h:1921

int
      compare(const basic_string& __str) const
      {
	const size_type __size = this->size();
	const size_type __osize = __str.size();
	const size_type __len = std::min(__size, __osize);

	int __r = traits_type::compare(_M_data(), __str.data(), __len);
	if (!__r)
	  __r =  __size - __osize;
	return __r;
      }

Mathieu

>http://www.itk.org/Testing/Sites/RogueResearch3/Mac10.5-InsightReview-
>gcc-dbg-ppc64/20080126-0100-Nightly/BuildWarning.html


More information about the Insight-developers mailing list