Size: a a a

Compiler Development

2021 January 18

BD

Berkus Decker in Compiler Development
(ну как, поддерживали на момент нормальной поддержки ++11 в трех мейнстримных компилях)
источник

M

MaxGraey in Compiler Development
Berkus Decker
оно давно не устаревшее, все c++11 компили это поддерживают
Так они его стандартизировали? Не знал
источник

BD

Berkus Decker in Compiler Development
MaxGraey
Так они его стандартизировали? Не знал
нет, оно до сих пор в лимбо
источник

BD

Berkus Decker in Compiler Development
стандарно де факто, но не де юре
источник

BD

Berkus Decker in Compiler Development
James Tevision
Можно же их вынести в третий хедер разорвав цикл
Лучше еще раз заинклюдить протектнутый файл
Чем надеятся на порядок юзера
Слова не мальчика, но Джона Лакоса, но не все и не всегда так делают, могут делать или даже хотят делать.
источник

JT

James Tevision in Compiler Development
И еще момент
Зачем в gcc отравили
malloc и calloc

Они как-то переназначены?
Я не нашел этой инфы закостылил сам
источник

A

Alex in Compiler Development
James Tevision
И еще момент
Зачем в gcc отравили
malloc и calloc

Они как-то переназначены?
Я не нашел этой инфы закостылил сам
Могу предположить что т.к. gcc собирается плюсовым компилятором и частично имеет плюсовый код, они боятся что кто-то не вызовет конструктор при работе через malloc. Ну либо просто вычищают сишные рудименты (не уверен что с той стороны заходят, но им виднее)
источник

BD

Berkus Decker in Compiler Development
James Tevision
И еще момент
Зачем в gcc отравили
malloc и calloc

Они как-то переназначены?
Я не нашел этой инфы закостылил сам
они же идут из  libc
источник

JT

James Tevision in Compiler Development
Alex
Могу предположить что т.к. gcc собирается плюсовым компилятором и частично имеет плюсовый код, они боятся что кто-то не вызовет конструктор при работе через malloc. Ну либо просто вычищают сишные рудименты (не уверен что с той стороны заходят, но им виднее)
Вот да, даже общая часть
gcc/c-family/ частично на плюсах написана
И по стандарту он все g++ собирает
Есть ли возможность писать на чистом С или такая возможность только в linux kernel разработке осталась?
источник

JT

James Tevision in Compiler Development
Berkus Decker
они же идут из  libc
И что это значит?
источник
2021 January 19

BD

Berkus Decker in Compiler Development
James Tevision
И что это значит?
что их предоставляет libc
источник

BD

Berkus Decker in Compiler Development
James Tevision
И что это значит?
а что значит “зачем отравили”?
источник

JT

James Tevision in Compiler Development
Berkus Decker
а что значит “зачем отравили”?
Нельзя их использовать......
источник

JT

James Tevision in Compiler Development
James Tevision
Нельзя их использовать......
*попытка использовать выбивает
attempt to use poisoned malloc/calloc
источник

BD

Berkus Decker in Compiler Development
James Tevision
Нельзя их использовать......
источник

BD

Berkus Decker in Compiler Development
James Tevision
*попытка использовать выбивает
attempt to use poisoned malloc/calloc
ну объяснение выше вполне логичноее,  чтобы не ломать RAII
источник

BD

Berkus Decker in Compiler Development
James Tevision
Нельзя их использовать......
А вот и решение прямо из сорцов гцц


/* As the last action in this file, we poison the identifiers that
  shouldn't be used.  Note, luckily gcc-3.0's token-based integrated
  preprocessor won't trip on poisoned identifiers that arrive from
  the expansion of macros.  E.g. #define strrchr rindex, won't error
  if rindex is poisoned after this directive is issued and later on
  strrchr is called.
  Note: We define bypass macros for the few cases where we really
  want to use the libc memory allocation routines.  Otherwise we
  insist you use the "x" versions from libiberty.  */

#define really_call_malloc malloc
#define really_call_calloc calloc
#define really_call_realloc realloc
источник

BD

Berkus Decker in Compiler Development
нужно всего лишь напрячься чуть-чуть
источник

JT

James Tevision in Compiler Development
Berkus Decker
А вот и решение прямо из сорцов гцц


/* As the last action in this file, we poison the identifiers that
  shouldn't be used.  Note, luckily gcc-3.0's token-based integrated
  preprocessor won't trip on poisoned identifiers that arrive from
  the expansion of macros.  E.g. #define strrchr rindex, won't error
  if rindex is poisoned after this directive is issued and later on
  strrchr is called.
  Note: We define bypass macros for the few cases where we really
  want to use the libc memory allocation routines.  Otherwise we
  insist you use the "x" versions from libiberty.  */

#define really_call_malloc malloc
#define really_call_calloc calloc
#define really_call_realloc realloc
Та пока так и сделал
Просто хотел узнать
Зачем было его отравлять...
источник

BD

Berkus Decker in Compiler Development
James Tevision
Та пока так и сделал
Просто хотел узнать
Зачем было его отравлять...
документация гцц как обычно очень детально и с примерами описывает гребаное ничего
источник