Приведение функций с аргументами-указателями к указателям на функции с аргументом void*C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Приведение функций с аргументами-указателями к указателям на функции с аргументом void*

Сообщение Anonymous »

Следующий код принимается GCC, и полученный двоичный файл выводит ожидаемые результаты. Но соответствует ли это стандарту и всегда ли будет работать в разных системах без использования разных компиляторов?
#include

using func_t = void(*)(void* data);

void int_func(int* data)
{
std::println("{}", *data);
}

void const_int_func(const int* data)
{
std::println("{}", *data);
}

void int_arry_func(int(&data)[2])
{
for (int elem : data)
std::println("{}", elem);
}

void const_int_arry_func(const int(&data)[2])
{
for (int elem : data)
std::println("{}", elem);
}

int main()
{
func_t func_1 = reinterpret_cast(int_func);
func_t func_2 = reinterpret_cast(const_int_func);
func_t func_3 = reinterpret_cast(int_arry_func);
func_t func_4 = reinterpret_cast(const_int_arry_func);

int val = 5;
int vals[2] = { 1, 2 };

func_1(& val);
func_2(& val);
func_3(vals);
func_4(vals);

return 0;
}


Подробнее здесь: https://stackoverflow.com/questions/798 ... id-argumen
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»