[Insight-users] Re: itkMinimumMaximumImageCalculator

Luis Ibanez luis . ibanez at kitware . com
Sun, 18 May 2003 23:10:33 -0400


Hi Chad,

You are right,
Since ITK enables/disables some platform-dependent
macros it is important to set ITK headers first.

The only exception to this rule is a case in which
<fstream> must be included before ITK headers in
windows.

Regards,

    Luis

-------------------
Chad Washington wrote:
> Thanks for the suggestions, but unfortunately I received the same errors.  So, 
> I removed all code associated with the Min/Max calculator except for the 
> inclusion of the header file, i.e. the only reference to the calculator in my 
> code is the line
> 
> #include other things
> #include "itkMinimumMaximumImageCalculator.h"
> #include other things
> 
> This gives me the following compilation error:
> In file included from
> 	Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.h:110,
> 	mie.h:29,
> 	mie.cxx:57:
> Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:47:45: macro 
> "min" requires 2 arguments, but only 1 given
> Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:48:45: macro 
> "max" requires 2 arguments, but only 1 given
> Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:78:45: macro 
> "max" requires 2 arguments, but only 1 given
> Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:102:45: macro 
> "min" requires 2 arguments, but only 1 given
> 
> However, when I changed this to where "itkMinimumMaximumImageCalculator.h" was 
> the first included itk file, then these errors were resolved.  I then added 
> the Min/Max calculations back into my code, compiled, and received no errors.
> 
> I'm not sure why there is this dependence on #include ordering, but I thought 
> you might like to know.
> 
> Thanks,
> Chad Washington
> Biomedical Modeling Laboratory
> Department of Biomedical Engineering
> Vanderbilt University
> 
> 
>>Date: Thu, 15 May 2003 23:13:20 -0400
>>From: Luis Ibanez <luis.ibanez@kitware.com>
>>To: chad.w.washington@vanderbilt.edu
>>Cc: Paul Yushkevich <pauly@cognitica.com>,
>>	insight <insight-users@public.kitware.com>
>>Subject: Re: [Insight-users] itkMinimumMaximumImageCalculator
>>
>>HI Chad,
>>
>>Please follow Paul's advice. He is right.
>>min and max are defined in windows standard
>>headers (for example).  ITK undefine them
>>in itkNumbericTraits.h in Insight/Code/Common.
>>
>>Strange that this undef is not working for you,
>>it should make this platform independent.
>>
>>We probably don't have a dashboard with gcc 3.2.3....
>>
>>
>>Regards,
>>
>>
>>   Luis
>>
>>
>>----------------------
>>
>>Paul Yushkevich wrote:
>>
>>>Chad,
>>>
>>>I'm not sure that my answer is right, but try doing this: change the
>>>names of the variables min and max to myMin and myMax.  In some
>>>compilers min and max are #defined macros and that may be causing the
>>>problem.  I know that I've had no problem using the MinMaxCalculator
>>>with the gcc compiler.
>>>
>>>On the other note, I would recommend using myCalculator->Compute()
>>>instead of ComputeMin and ComputeMax.  It should be a little more
>>>efficient when you need both the min and the max.
>>>
>>>Paul
>>>
>>>Chad Washington wrote:
>>>
>>>>I am trying to use the Min/Max calculator and keep getting errors when
>>>>I compile the code.  I am using gcc 3.2.3 and have the following
>>>>definitions:
>>>>
>>>>typedef int     PixelType;
>>>>typedef itk::Image< PixelType, 2 >     ImageType;
>>>>typedef itk::MinimumMaximumCalculator< ImageType >     CalculatorType;
>>>>
>>>>and the code:
>>>>ImageType::PixelType min;
>>>>ImageType::PixelType max;
>>>>myCalculator->SetImage( myImage );
>>>>myCalculator->ComputeMinimum();
>>>>min = myCalculator->GetMinium();
>>>>myCalculator->ComputMaximum();
>>>>max = myCalculator->GetMaximum();
>>>>
>>>>The resulting errors:
>>>>In file included from                 from
>>>>itkMinimumMaximumImageCalculator.h:110,
>>>>                from mie.h:28,
>>>>                from mie.cxx:57:
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:47:45:
>>>>macro "min" requires 2 arguments, but only 1 given
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:48:45:
>>>>macro "max" requires 2 arguments, but only 1 given
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:78:45:
>>>>macro "max" requires 2 arguments, but only 1 given
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:102:45:
>>>>macro "min" requires 2 arguments, but only 1 given
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx: In
>>>>  member function `void
>>>>  itk::MinimumMaximumImageCalculator<TInputImage>::ComputeMaximum()
>>>>[with TInputImage = ImageType]':
>>>>mie.cxx:1653:   instantiated from here
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:102:
>>>>invalid
>>>>  conversion from `int (*)()' to `int'
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx: In
>>>>  member function `void
>>>>  itk::MinimumMaximumImageCalculator<TInputImage>::ComputeMinimum()
>>>>[with TInputImage = ImageType]':
>>>>mie.cxx:1674:   instantiated from here
>>>>Insight/Code/BasicFilters/itkMinimumMaximumImageCalculator.txx:78:
>>>>invalid
>>>>  conversion from `int (*)()' to `int'
>>>>
>>>>Thanks,
>>>>Chad Washington
>>>>Biomedical Modeling Laboratory
>>>>Department of Biomedical Engineering
>>>>Vanderbilt University
>>>>_______________________________________________
>>>>Insight-users mailing list
>>>>Insight-users@public.kitware.com
>>>>http://public.kitware.com/mailman/listinfo/insight-users
>>>
>