On Fri, 9 Feb 2007, Sergei Organov wrote: > Alan Stern <[EMAIL PROTECTED]> writes: > > > On Thu, 8 Feb 2007, Sergei Organov wrote: > > > >> IMHO aligned(N) should be used in portable code only to *increase* > >> alignment (this effectively excludes usage of 'packed'), and then the > >> alignment won't affect the low-level operations, that automatically > >> answers your question. Simple? > > > > If you don't consider the alignment attribute to be part of the type, then > > you can indeed express "16-bit-little-endian-unsigned-integer-unaligned" > > as a C type. In fact __le16 expresses it perfectly all except for the > > "unaligned" part, which you agree doesn't belong in the type. > > How does it express the little-endian part? Just by the 'le' in its > name? I'd like a variable of type __le16 to be converted to native > endianness when assigned to, say, an int variable (and vise > versa). Besides, the 'bitwise' tricks are not C, so if we stay in C, the > __le16 is basically something like 'unsigned short' that does not express > more than '16-bit-unsigned-integer'.
If you remain within the confines of C, it's impossible to express most types. As a simple example, consider a variable that stores an integer percentage value: a number between 0 and 100. There's no way to express that as a type in C. The fact is, the Linux kernel is expressly designed to use the GCC extensions to C (and even more, the sparse annotations). This allows you to express more concepts in the type, even if it still isn't as much as you might like. The notation even allows you to express concepts that can be understood by a human reader, although not by the compiler. If you insist that all the important information in a program be expressed in a form the compiler can understand, does that mean you also refuse to use comments? Alan Stern ------------------------------------------------------------------------- Using Tomcat but need to do more? Need to support web services, security? Get stuff done quickly with pre-integrated technology to make your job easier. Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642 _______________________________________________ linux-usb-devel@lists.sourceforge.net To unsubscribe, use the last form field at: https://lists.sourceforge.net/lists/listinfo/linux-usb-devel