Actually I just remembered another reason why I hate the stdint.h types:

When compiling on Ubuntu 12.10:

../../lib/ipmi_delloem.c: In function 'ipmi_print_power_consmpt_history':
../../lib/ipmi_delloem.c:4006:13: warning: format '%lld' expects
argument of type 'long long int', but argument 2 has type 'uint64_t'
[-Wformat]

So, apparently -Wformat is smart enough to check the type, but not so
smart as to be able to check the underlying type, so you get hundreds
of errors like these if you use the uint64_t rather than the standard
c type 'unsigned long long'.

stdint.h made sense for a period of time when the 16 to 32 bit
processor transition was happening and C was a "new" language and
there was ambiguity about the size of an "int", but really I don't see
the point of it anymore.  It just causes tons of issues like this.
It's perfectly possible to write the exact same code which will behave
on all (32 and 64 and even a lot of 16) bit processors without any
ambiguity of the size of a data type as long as you don't use 'long'
(unless you want it to match a pointer size).  Especially for a
project like ipmitool which has a pretty limited set of processors
which it has to support.

Anyways, mini-rant against stdint.h over....

thanks
dan




On Mon, Apr 1, 2013 at 3:43 PM, Zdenek Styblik <zdenek.styb...@gmail.com> wrote:
> On Mon, Apr 1, 2013 at 8:08 PM, Dan Gora <dan.g...@gmail.com> wrote:
>> On Mon, Apr 1, 2013 at 3:04 PM, Zdenek Styblik <zdenek.styb...@gmail.com> 
>> wrote:
>>> On Mon, Apr 1, 2013 at 7:52 PM, Dan Gora <dan.g...@gmail.com> wrote:
>>>> yes because the structure is only 3 bytes long.  Recall that a long is
>>>> 8 bytes on 64 bit machines.  An unsigned int is always 4 bytes (unless
>>>> we're talking about 16 or 8 bit processors here, which we're not...).
>>>> Longs (unsigned or not) should really be avoided unless you're really
>>>> prepared to deal with them being different sizes or 32 or 64 bit
>>>> machines.
>>>>
>>>
>>> Why don't you use int types from "<stdint.h>" that I don't understand.
>>> Is there something wrong about it? Because you'd have equally sized
>>> integers no matter what platform you're currently running at. This
>>> was, actually, one of comments/questions/suggestions I had about
>>> posted patches.
>>
>> Just because I'm not used to using them because I've worked on some
>> platforms which didn't have it and I'm just accustomed to using the
>> underlying standard C types.  I can change that though, no problem.
>>
>> thanks,
>> d
>
> No worries. I also didn't mean it as any kind of enforcement. From my
> point it makes sense, or at least in this particular case. Whether it
> makes sense "sense", I can't say :)
> I won't deny I'm trying to push use of <stdint.h> types.
>
> Z.

------------------------------------------------------------------------------
Minimize network downtime and maximize team effectiveness.
Reduce network management and security costs.Learn how to hire 
the most talented Cisco Certified professionals. Visit the 
Employer Resources Portal
http://www.cisco.com/web/learning/employer_resources/index.html
_______________________________________________
Ipmitool-devel mailing list
Ipmitool-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ipmitool-devel

Reply via email to