Информация об изменениях

Сообщение Re[12]: C++ 20 приняли от 08.01.2021 22:13

Изменено 08.01.2021 22:46 kov_serg

Re[12]: C++ 20 приняли
Здравствуйте, Videoman, Вы писали:

V>Я, честно, вообще не представляю как на С делается такое:

V>допустим есть уже куча готового кода и нужно сказать — делай вот все-все на 99% тоже самое, но вот с этим новым типом — вот так...
Либо так
void qsort(void *base, size_t num, size_t size, int (*compare) (const void *, const void *));

или просто в файле используются названия типов которые надо менять и потом
они подключаются с в исходниках с разными типами
//add.cc
NUM ADD(NUM a,NUM b) { return a+b; }

//add_int.c
#define NUM int
#define ADD add_int
#include "add.cc"

//add_float.c
#define NUM float
#define ADD add_float
#include "add.cc"

// add.h
int add_int(int,int);
int add_float(float,float);

Или просто кодогенерация скриптами как в opengl

V>На С++ просто делается перегрузка и все, компилятор сам подставит нужный новый метод, а остальное трогать не нужно.

Ага и ненужный тоже.
Re[12]: C++ 20 приняли
Здравствуйте, Videoman, Вы писали:

V>Я, честно, вообще не представляю как на С делается такое:

V>допустим есть уже куча готового кода и нужно сказать — делай вот все-все на 99% тоже самое, но вот с этим новым типом — вот так...
Либо так
void qsort(void *base, size_t num, size_t size, int (*compare) (const void *, const void *));

или просто в файле используются названия типов которые надо менять и потом
они подключаются с в исходниках с разными типами
//add.cc
NUM ADD(NUM a,NUM b) { return a+b; }

//add_int.c
#define NUM int
#define ADD add_int
#include "add.cc"

//add_float.c
#define NUM float
#define ADD add_float
#include "add.cc"

// add.h
int add_int(int,int);
float add_float(float,float);

Или кодогенерация скриптами как в opengl и генераторами как например yacc, bison для разных dsl

V>На С++ просто делается перегрузка и все, компилятор сам подставит нужный новый метод, а остальное трогать не нужно.

Ага и ненужный тоже.