Перейти к содержанию
    

Хотя... а в чем недоделанность _Bool ? Кроме ужасного названия?
Он размером с int.

И например на AVR от него никакого толку т.к. не помещается в байт.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Надо в стандарте записать, чтобы одиночные битовые поля имели тип bool.

 

И например на AVR от него никакого толку т.к. не помещается в байт.

И в крынку битовое поле не лезет? Оно же имеет тип int. :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

1. возможность для автоматических переменных задавать одинаковые идентификаторы во вложенных блоках.
Согласен, но с одним уточнением - намеренное использование одинаковых идентификаторов. Иначе программисту придется перед тем, как сделать например такое в какой то функции -

{
int i;
for(i=0;i<10;++i) a[i]=i;
}

просмотреть весь остальной код функции, что бы убедится, что там нигде не используется i

 

3. использование "для оптимальности" вариаций 5[a] и аналогичных "трюков".
Это не 'трюк', это вообще 'курьез'. Использовать это в программе можно только с явной целью всех запутать. :rolleyes: Так что с этим пунктом тоже согласен.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А я люблю писать компактно, без лишних скобок, с минимальным количеством операторов. Считаю, что и компилируется более компактно, и работает чуть быстрее

Вы еще без лишних пробелов пишите, вдруг более компактно компилироваться будет )))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вы еще без лишних пробелов пишите, вдруг более компактно компилироваться будет )))

Вот это в мое понятие о красоте и целесообразности не укладывается! Посмотрел, как в книжках пишут, на форуме, выработал свой стиль. Взял лучшее.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

astyle рулит - за секунду переформатирует любой "страшный" си-код под свои предпочтения.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

astyle рулит - за секунду переформатирует любой "страшный" си-код под свои предпочтения.

Может подскажите как заставить astyle переменные писать с начала строки а код с таба?

int fn(int a,int b)
{
int c;
<TAB>c = a+ b;
<TAB>какой-то код
return c;
}

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может подскажите как заставить astyle переменные писать с начала строки а код с таба?
Не подскажу.

Никогда такого желания не возникало.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пример макроса, используемого в исходниках Linux.

Тот кто сможет это осознать уже заслуживает медали;-)

 

#define container_of(ptr, type, member) ({ \
                const typeof( ((type *)0)->member ) *__mptr = (ptr); 
                (type *)( (char *)__mptr - offsetof(type,member) );})

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вот пример макроса используемого в исходниках Linux.

Тот кто сможет это осознать уже заслуживает медали;-)

 

#define container_of(ptr, type, member) ({ \
                const typeof( ((type *)0)->member ) *__mptr = (ptr); 
                (type *)( (char *)__mptr - offsetof(type,member) );})

 

Вычисляет адрес структуры типа type по известному указателю ptr на ее элемент с именем member

Изменено пользователем sasamy

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вычисляет адрес структуры типа type по известному указателю ptr на ее элемент с именем member

Тому кто сможет сделать этот макрос без использования трёх применённых там GCC-шных расширений, используя только стандартный С99, тому можно сразу памятник нерукотворный :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тому кто сможет сделать этот макрос без использования трёх применённых там GCC-шных расширений, используя только стандартный С99, тому можно сразу памятник нерукотворный :)

как то я не вижу трёх расишрений -- вроде ведь только одно (TYPEOF()) ?

и TYPEOF() * на void * можно заменить ?

 

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Тому кто сможет сделать этот макрос без использования трёх применённых там GCC-шных расширений, используя только стандартный С99, тому можно сразу памятник нерукотворный :)

 

А зачем ? Это - не для всех :)

http://www.ibm.com/developerworks/ru/library/l-gcc-hacks/

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

#define CONTAINING_RECORD(address, type, field) ((type *)((unsigned char *)(address) - (unsigned char *)(&((type *)0)->field)))

Ставьте памятник :) Авторам TNKernel :)

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...