Spec-Zone.ru › GCC 13

6.34.9 Атрибуты переменных Microsoft Windows

Эти атрибуты можно использовать для целей Microsoft Windows. Атрибуты переменных x86 содержат дополнительные атрибуты совместимости Windows, доступные для всех целей x86.

dllimport
dllexport

Атрибуты dllimport и dllexport описаны в Атрибутах функций Microsoft Windows.

selectany

Атрибут selectany обеспечивает семантику «link-once» для инициализированной глобальной переменной. Когда компоновщик сталкивается с несколькими определениями переменной, он выбирает первое и отбрасывает остальные. Следуя практике Microsoft компилятора, компоновщику сообщается не выдавать предупреждения о различиях в размере или содержимом между множественными определениями.

Хотя основное применение этого атрибута относится к типам POD, его также можно применять к глобальным объектам C++, инициализируемым конструктором. В этом случае код статической инициализации и уничтожения объекта генерируется в каждом переводе, определяющем объект, но вызовы конструктора и деструктора защищены переменной-сторожем link-once.

Атрибут selectany доступен только для целей Microsoft Windows. Можно использовать __declspec (selectany) в качестве синонима для __attribute__ ((selectany)) для обеспечения совместимости с другими компиляторами.

shared

В Microsoft Windows, помимо размещения определений переменных в именованном сегменте, сегмент также может быть общим для всех запущенных копий исполняемого файла или DLL. Например, эта небольшая программа определяет общие данные, размещая их в именованном сегменте shared и отмечая сегмент как общий:

int foo __attribute__((section ("shared"), shared)) = 0;

int
main()
{
  /* Read and write foo.  All running
     copies see the same value.  */
  return 0;
}

Атрибут shared можно использовать только вместе с атрибутом section с полностью инициализированным глобальным определением, из-за особенностей работы компоновщиков. Подробнее см. атрибут section.

Атрибут shared доступен только для целей Microsoft Windows.

© Free Software Foundation
Licensed under the GNU Free Documentation License, Version 1.3.
https://gcc.gnu.org/onlinedocs/gcc-13.3.0/gcc/Microsoft-Windows-Variable-Attributes.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API