РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
1180 of 1245 menu

Атрибут link

Атрибут link применяется к блокам extern и сообщает компилятору, что для работы программы необходимо скомпоновать нативную библиотеку. Параметром атрибут принимает строку с именем библиотеки, а также может принимать дополнительные параметры, например kind для указания типа библиотеки. Этот атрибут используется в небезопасном коде при взаимодействии с внешними библиотеками на C или других языках.

Синтаксис

#[link(name = "library_name")] #[link(name = "library_name", kind = "static")] #[link(name = "library_name", kind = "dylib")]

Пример

Давайте объявим внешнюю функцию из библиотеки "m" и укажем компоновщику подключить её через атрибут link:

#[link(name = "m")] extern "C" { fn sqrt(x: f64) -> f64; } fn main() { let res = unsafe { sqrt(16.0) }; println!("{}", res); }

Результат выполнения кода:

4

Пример

Давайте укажем статический тип библиотеки через параметр kind:

#[link(name = "m", kind = "dylib")] extern "C" { fn cos(x: f64) -> f64; } fn main() { let res = unsafe { cos(0.0) }; println!("{}", res); }

Результат выполнения кода:

1

Смотрите также

  • ключевое слово extern "C",
    которое объявляет внешние функции в стиле C
  • ключевое слово unsafe,
    которое позволяет выполнять небезопасные операции
  • атрибут no_mangle,
    который отключает искажение имён функций
  • атрибут repr(C),
    который задаёт C-совместимое представление структур
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить