@matweykai
Человек, который хочет влезть в мир IT. Изучаю C#

Как языки получают новые возможности из библиотек?

Изучаю C++ примерно полгода, но немогу понять как библиотеки могут расширять возможности языка? Например в C++ нет встроенных возможностей для работы с GUI, но WinAPI это позволяет сделать, как?
Библиотека написана на другом языке?
  • Вопрос задан
  • 84 просмотра
Решения вопроса 1
@res2001
Developer, ex-admin
Грубо говоря в компьютере взаимодействие с любыми устройствами заключается в том, что нужно записать некоторый набор байт по определенному адресу в памяти (порт). Адресные диапазоны устройств (порты) и протокол обмена заранее известны. Каждый тип устройства имеет свой собственный протокол обмена с ПК (т.е. набор и количество данных и размер адресного пространства устройства).
Современные ОС запрещают напрямую работать с устройствами, т.к. защита и все такое. Но ОС предоставляют собственные функции, позволяющие управлять устройствами, только более высокоуровневые. Ну т.е. вы не думаете куда и что именно надо записать, чтоб на экране нарисовалась точка. Вы просто вызывавете функцию ОС с заданными координатами точки.
Когда все работали под MS-DOS, то ОС не препятствовала низкоуровневому доступу к оборудованию и любая программа могла непосредственно взаимодействовать с устройством без посредничества ОС. Сейчас погрузиться в это можно программируя микроконтроллеры.

Обычно ОС пишут на Си. Поэтому разработчику ОС достаточно легко предоставить библиотеку API функций для Си. С++ как потомок Си так же умеет работать с Си библиотеками. В других ЯПах приходится реализовывать механизмы, чтоб из них можно было бы вызывать библиотечные Си функции.
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
firedragon
@firedragon
Senior .NET developer
Как то так.
#include <windows.h>

MessageBox(hwndDlg,"Die!","I'm dead!",MB_YESNO|MB_ICONINFORMATION);


Впрочем есть еще ATL, WTL, MFC они за вас сделают черную работу.

Под линуксом все то же самое, с некоторыми отличиями

https://habr.com/ru/post/352096/
Ответ написан
@anikavoi
Изучаю C++ примерно полгода, но немогу понять как библиотеки могут расширять возможности языка?

Примерно так же как обычные библиотеки расширяют возможности человека.

Например в C++ нет встроенных возможностей для работы с GUI, но WinAPI это позволяет сделать, как?

"Do you speak English? Не? Ну вот тебе словарь и учебник".

Библиотека написана на другом языке?

Может и на другом, может и на том же. Разницы нет если вызовы согласованы.

Намек: GUI под linux и GUI под windows совершенно разные, а язык C++ - такой же.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы