почему битовые поля для совпадающих типов данных имеют меньше в размере по сравнению с битовыми полями для типов данных соединения

Нет простого способа реализовать это непосредственно в Primeng. Но вы должны сделать трюк для этого. Возможно, это будет не лучшим решением, но оно послужит вашей цели. Это только обходной путь.

Возьмем для примера кнопку радио Primeng.

Я добавил пользовательский класс customeRadio в html, а также добавил тег <a> в том же качестве, что и значение параметра.

<div class="ui-g-12 customeRadio">
    <p-radioButton name="group1" value="Option 1" label="Option 1" [(ngModel)]="val1" inputId="opt1">
    </p-radioButton><a href="">Option 1</a>
  </div>
  <div class="ui-g-12 customeRadio">
    <p-radioButton name="group1" value="Option 2" label="Option 2" [(ngModel)]="val1" inputId="opt2">
    </p-radioButton><a href="">Option 2</a>
  </div>
  <div class="ui-g-12 customeRadio">
    <p-radioButton name="group1" value="Option 3" label="Option 3" [(ngModel)]="val1" inputId="opt3">
    </p-radioButton><a href="">Option 2</a>
  </div>

Теперь в файле styles.css или в том месте, где вы хотите написать CSS для него.

Просто скрыть все содержимое метки, используя свойство селектора css:

.customeRadio label{
    display:none;
}

Вот и все!

5
задан Grace Note 6 July 2010 в 12:30
поделиться

2 ответа

Выравнивание.

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

Было некоторое обсуждение в этом вопросе по вопросу.

Решение состоит в том, чтобы дать #pragma директивы или __attributes__ к Вашему компилятору, чтобы дать этому команду игнорировать оптимизацию выравнивания.

4
ответ дан 14 December 2019 в 09:01
поделиться

В стандарте C (версия 1999 года, §6.7.2.1, страница 102, указывают 10) говорится это:

Реализация может выделить любое адресуемое устройство хранения данных, достаточно большое для содержания битового поля. Если достаточно пространства останется, то битовое поле, которое сразу следует за другим битовым полем в структуре, должно быть упаковано в смежные биты той же единицы.

Кажется, нет никакой формулировки, чтобы позволить упаковке быть затронутой типами полей. Таким образом я пришел бы к заключению, что это - ошибка компилятора.

gcc делает 4-байтовую структуру в любом случае, и на 32-разрядном и на 64-разрядной машине, в соответствии с Linux. Я не имею VS и не могу протестировать это.

3
ответ дан 14 December 2019 в 09:01
поделиться