Результаты поиска по запросу "function-pointers"

5 ответов

Присвоение включает в себя преобразование, как и при приведении (которое по определению является явным преобразованием), таким образом, это неопределенное поведение. Это может работать с некоторыми реализациями C, либо как расширение, либо случайно (например, из-за того же представления и отсутствия оптимизаций, которые нарушат код), но нет гарантии от стандарта C.

аюсь запустить следующую программу, но получаю странные ошибки: Файл 1.c: typedef unsigned long (*FN_GET_VAL)(void); FN_GET_VAL gfnPtr; void setCallback(const void *fnPointer) { gfnPtr = *((FN_GET_VAL*) (&fnPointer)); } Файл 2.c: extern ...

5 ответов

Класс внешнего хранения используется для объявления глобальной переменной, которая будет известна функциям в файле и может быть известна всем функциям в программе. Этот класс хранения имеет длительность, которая является постоянной. Любая переменная этого класса сохраняет свое значение, пока не будет изменена другим присваиванием. Область является глобальной. Переменная может быть известна или видна всем функциям в программе.

разница между статической функцией-членом и внешней функцией связи "C"? Например, при использовании «makecontext» в C ++ мне нужно передать указатель на функцию. Google рекомендует использовать для этого внешнюю связь «C», потому ...

3 ответа

компилятор не обязательно будет создавать самоизменяющийся код для реализации указателей на функции, хотя в некоторых случаях это возможно. Например, в Windows / IA-32 вы можете выделить память с помощью VirtualAlloc и флага PAGE_EXECUTE_READWRITE, а также записать байт-код по этому адресу и вызвать его ...

вая, что все примитивные типы данных и объекты имеют выделенную память, интуитивно легко представить указатели на эти типы. Но где именно указатели на функции указывают? Учитывая, что инструкции преобразуются в машинный код и находятся в памяти, ...

ТОП публикаций

2 ответа

Всегда ли два указателя на одну и ту же функцию одинаковы?

Гарантирует ли стандарт C ++, что два указателя на функцию всегда сравниваются одинаково? Я понимаю, что это обычно будет верно для не встроенных функций. Но если есть встроенная функция и указатель на функцию создается в двух отдельных единицах ...

3 ответа

http://cdecl.org

ню, как однажды видел веб-сайт, который расшифровал сложные определения типов C ++, включая указатели на функции, возвращающие указатели на функции, которые возвращают массив с… Это превратило бы такие определения в читаемый текст на английском ...

4 ответа

 чтобы они все были одного типа.

льные указатели могут быть сохранены с использованием универсальногоvoid*, например void* arr[10]; arr[0] = pChar; arr[1] = pINt; arr[2] = pA;Некоторое время назад я натолкнулся на дискуссию,void* может быть недостаточно способным ...

3 ответа

Вы можете получить указатель на него, например, так:

у вас есть такая структура struct A { void func(); };и ссылка, как этот A& a;вы можете получить указатель на егоfunc метод как это: someMethod(&A::func);А что если этот метод является виртуальным, и вы не знаете, что это во время выполнения? ...

6 ответов

мы можем использовать SFINAE или

раюсь изо всех сил против идеи, которая достаточно проста в моей голове, но я не могу понять, как реализовать в C ++. Обычно я могу объявить класс с оператором преобразования, как в этом простом примере: class Foo { private: int _i; public: ...

3 ответа

 для полного описания того, что необходимо сделать для создания pthreads таким образом.

у прекратить предупреждение server.cpp: 823: предупреждение: преобразование из 'void * (ClientHandler ::) () 'to' void () (Недействительный)» в вызове: pthread_create(th, NULL, (void* (*)(void*)) &ClientHandler::handle, (void ...

0 ответов

Ой, извините за размещение плохой информации :(

ыtypedef int (&rifii) (int, int) быть использованы для? Что такое typedef перед этим «оператором»? Я хочу думать об этом как typedef (int (&rifii) (int, int)) [new name]но [новое имя] там не так, как если бы вы делаете typedef int ...