|
|||
Связывание.. Раннее связывание.Связывание. Выполнение программы в C++ происходит последовательно, строка за строкой, начиная с функции main(). Когда компилятор встречает вызов функции, то точка выполнения переходит к началу кода вызываемой функции. Как компилятор знает, что это нужно сделать? При компиляции программы, компилятор конвертирует каждый(ую) оператор/инструкцию программы в одну или несколько строк машинного кода. Каждой строке машинного кода присваивается собственный уникальный адрес. Так же и с функциями: когда компилятор встречает функцию, она конвертируется в машинный код и получает свой адрес. Связывание — это процесс, который используется для конвертации идентификаторов (таких как имена переменных или функций) в адреса. Раннее связывание. Большинство вызовов функций, которые встречает компилятор, являются прямыми вызовами функций. Прямой вызов функции — это оператор/инструкция, который(ая) напрямую вызывает функцию. Например:
#include <iostream> void printValue(int value) { std::cout << value; } int main() { printValue(7); // это прямой вызов функции return 0; } #include <iostream>
void printValue(int value) { std::cout << value; } int main() { printValue(7); // это прямой вызов функции return 0; } Поскольку printValue(7), является прямым вызовом функций, то компилятор будет использовать раннее связывание. Он заменит вызов printValue(7) инструкцией, которая сообщит процессору перейти к адресу void printValue(int value).
Прямые вызовы функций выполняются с помощью раннего связывания. Раннее связывание (или ещё «статическая привязка») означает, что компилятор может напрямую связать имя идентификатора (например, имя функции или переменной) с машинным адресом. Помните, что все функции имеют свой уникальный адрес. Поэтому, когда встречает вызов функции, он заменяет его инструкцией машинного кода, которая сообщает процессору перейти к адресу функции.
|
|||
|