alignas specifier
Материал из cppreference.com
|
|
Эта страница была переведена автоматически с английской версии вики используя Переводчик Google.
Перевод может содержать ошибки и странные формулировки. Наведите курсор на текст, чтобы увидеть оригинал. Вы можете помочь в исправлении ошибок и улучшении перевода. Для инструкций перейдите по ссылке. Щёлкните здесь, чтобы увидеть английскую версию этой страницы |
Определяет выравнивание требований типа или объекта.
Оригинал:
Specifies the alignment requirement of a type or an object.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Содержание |
[править] Синтаксис
alignas( expression )
|
(начиная с C++11) | ||||||||
alignas( type-id )
|
(начиная с C++11) | ||||||||
[править] Объяснение
alignas спецификатора может быть применен к объявлению переменной или членом класса данных, или оно может быть применено к определению класса / структуры / объединения или перечисления.
Оригинал:
The alignas specifier may be applied to the declaration of a variable or a class data member, or it can be applied to the definition of a class/struct/union or enum.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
При использовании в форме alignas(expression), и expression является неотъемлемой постоянное выражение, положительное значение, заявленное лицо будет иметь свой набор требований выравнивания точно результат expression, за исключением, если он ослабит естественное требование выравнивания типа.
Оригинал:
When used in form alignas(expression), and expression is an integral constant expression that evaluates to a positive value, the declared entity will have its alignment requirement set to exactly the result of the expression, except if it would weaken the natural alignment requirement of the type.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
При использовании в форме alignas(type), в точности эквивалентен alignas(alignof(type)), то есть выравнивание требованием заявил лицо будет равна выравнивание требований type
Оригинал:
When used in form alignas(type), is exactly equivalent to alignas(alignof(type)), that is, the alignment requirement of the declared entity will be equal the alignment requirement of type
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Заметки
alignas(0) не имеет никакого эффекта.
Оригинал:
alignas(0) has no effect.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Когда несколько alignas спецификаторы применяются к той же переменной или класса, самый строгий из них используется.
Оригинал:
When multiple alignas specifiers are applied to the same variable or class, the strictest one is used.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Язык C определяет alignas как макрос препроцессора в заголовке <stdalign.h>, но в C + + это ключевые слова, заголовки и <stdalign.h> и <cstdalign> не определяют такой макрос. Они, однако, определить макро постоянной __alignas_is_defined.
Оригинал:
The C language defines alignas as a preprocessor macro in the header <stdalign.h>, but in C++ this is a keyword, and the headers <stdalign.h> and <cstdalign> do not define such macro. They do, however, define the macro constant __alignas_is_defined.
Текст был переведён автоматически используя Переводчик Google.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
Вы можете проверить и исправить перевод. Для инструкций щёлкните сюда.
[править] Ключевые слова
[править] Пример
Запустить этот код
// every object of type sse_t will be aligned to 16-byte boundary struct alignas(16) sse_t { float sse_data[4]; }; // the array "cacheline" will be aligned to 128-byte boundary char alignas(128) cacheline[128];
[править] См. также
| alignof operator | queries alignment requirements of a type (начиная с C++11) |
| (C++11) |
Получает требования к выравниванию типа (шаблон класса) |

