Re[9]: Вы пользуетесь constexpr?
От: Shmj Ниоткуда  
Дата: 30.11.24 12:08
Оценка:
Здравствуйте, rg45, Вы писали:

R>Вот так нельзя сделать исполняемый файл:

R>А вот так можно:

R>Здесь тоже два разных языка?


Ключевое слово — калькуляция. Язык нужен чтобы что-то вычислять — иначе смысла нет.

Так вот — C++ умеет вычислять в двух режимах: обычный режим в момент исполнения на компе пользователя. И второй режим вычисления — в момент компиляции.

Тот же голый С если и может что вычислять в момент сборки, то достаточно примитивные вещи — как то примитивные арифметические операции. У C++ возможности намного шире.

Ну можно еще иначе назвать: конструкции языка C++, которые поддерживают вычисления в момент компиляции. Т.е. грубо говоря то, что можно написать внутри функции constexpr (которая используется в режиме компиляции).

#include <iostream>

constexpr int fun1(int x)
{
    // Какие конструкции мы можем использовать тут?
    return 100 / x;
}

int main()
{
    constexpr int result = fun1(0);
    std::cout << "Result: " << result << std::endl;

    return 0;
}


— а конструкций не так уж много, получается. Ни выделение памяти с помощью new, ни reinterpret_cast/dynamic_cast/const_cast. Т.е. совсем другой ограниченный язык, совсем другие возможности. Ну да, во многом похож на C++.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.