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