Intereting Posts
В C, как цикл для каждого перечисляемого литерала, где литералы не имеют последовательных значений Что происходит, когда два процесса записываются в одну и ту же часть mmaped-файла? Hough Transform: улучшение эффективности алгоритма над OpenCL Является ли int * array указателем на массив из 32 целых чисел или массив из 32 указателей на int? Это имеет значение? Использование FPU с встроенной сборкой C Найти наибольший коэффициент числа? C Программа для обнаружения прямоугольных треугольников Является ли ошибка в грамматике или в коде? Массивная разность скоростей fprintf без «-std = c99» создание диалогового диалога с opengl Почему 0 (ноль) печатается без ведущего «0x» с форматом C printf «% # x»? Язык C: if () без else (): использование брекетов не выполняется Синтаксис PythonError при вложении в C выделение памяти для массива указателей Ошибка сегментации при замене подстрок строки другой подстрокой

Внедрите свой собственный sizeof

Возможный дубликат:
размер типа данных без использования sizeof

Один из моих друзей недавно появился в интервью NVIDIA, где его попросили implement his own sizeof in C Я пытался сделать то же самое для практики и успешно писать два разных определения sizeof один из которых может обрабатывать переменные, а другие могут обрабатывать типы данных, но я не могу объединить эти два. Есть ли способ сделать это? Кроме того, возможно ли реализовать полный sizeof в C.

Типы int , такие как int , char т. Д.

 #define my_sizeof(type) ((size_t)(((type *)0) + 1)) 

Обрабатывает переменные типа x

 #define my_sizeof(var) (size_t)((char *)(&var+1)-(char*)(&var)) 

Хороший вопрос

  1. Я не вижу способа объединить эти два.

  2. Реализация для обработки второго небезопасна

что, если пользователь делает

 sizeof (*ptr) sizeof (func())