However, in general, I agree w/ the basic idea of having
bitfields defined as unsigned ints, not because I like
the idea of somehow using these bitfields as "tiny"
signed ints but because it's better for packing and
alignment purposes.

So I'm not against the commit at all.

We are using, afaik, all of our :1 bitfields as flags,
simple boolean flags. We shouldn't be assuming whether
they are signed or not.

On Jun 20, 2014, at 10:17 AM, Jim Jagielski <j...@jagunet.com> wrote:

> What I meant was "true or false"... Sorry for the confusion.
> 
> On Jun 20, 2014, at 9:06 AM, Yann Ylavic <ylavic....@gmail.com> wrote:
> 
>> I can't agree with you on this.
>> 
>> You first say a bit is either 0 or 1, which is not true for a signed
>> bit (0 or -1), and confirms somehow we should use unsigned here.
>> A good compiler should also complain about setting 1 to something that
>> can only take 0 or -1, and we did that before this commit.
>> The unambigous solution would be to use the bool type, but that's
>> another story, and the closest alternative is to use *unsigned* bit
>> field of size 1.
>> 
>> BTW, I can revert this since the code using it does not compare the
>> bit explicitely, but I find signed bit fields quite error prone if the
>> value is not meant to be used for signed things (which isn't the case
>> here).
>> 
>> On Fri, Jun 20, 2014 at 1:51 PM, Jim Jagielski <j...@jagunet.com> wrote:
>>> Besides that, any compiler worth its salt should complain.
>>> 
>>> On Jun 20, 2014, at 7:50 AM, Jim Jagielski <j...@jagunet.com> wrote:
>>> 
>>>> Who does that w/ bit fields? You either check if it's
>>>> true/false or you use the expected bit operations.
>>>> 
>>>> On Jun 19, 2014, at 9:29 AM, Yann Ylavic <ylavic....@gmail.com> wrote:
>>>> 
>>>>> On Thu, Jun 19, 2014 at 2:59 PM, Jim Jagielski <j...@jagunet.com> wrote:
>>>>>> 
>>>>>> On Jun 19, 2014, at 8:43 AM, yla...@apache.org wrote:
>>>>>> 
>>>>>>> Author: ylavic
>>>>>>> Date: Thu Jun 19 12:43:05 2014
>>>>>>> New Revision: 1603863
>>>>>>> 
>>>>>>> URL: http://svn.apache.org/r1603863
>>>>>>> Log:
>>>>>>> Use unsigned bit flags (otherwise the non-zero value to be used is -1).
>>>>>>> 
>>>>>> 
>>>>>> I don't understand that at all... A bit is either 1 or 0.
>>>>>> 
>>>>> 
>>>>> Well, it depends on what you are doing with that bit...
>>>>> 
>>>>> #include <stdio.h>
>>>>> int main(int argc, const char *argv[])
>>>>> {
>>>>> struct {
>>>>>     int s:1;
>>>>> } bitfield;
>>>>> 
>>>>> bitfield.s = 1;
>>>>> if (bitfield.s > 0) {
>>>>>     printf("positive\n");
>>>>> }
>>>>> else {
>>>>>     printf("negative or nul\n");
>>>>> }
>>>>> if (bitfield.s == 1) {
>>>>>     printf("one\n");
>>>>> }
>>>>> else {
>>>>>     printf("not one\n");
>>>>> }
>>>>> 
>>>>> return 0;
>>>>> }
>>>>> 
>>>>> $ ./bitfield
>>>>> negative or nul
>>>>> not one
>>>>> 
>>>> 
>>> 
>> 
> 

Reply via email to