Я пытаюсь скомпилировать код назначения некоторых указателей функций.
Я пробовал разные варианты назначений указателей и __cdecl.
Но безуспешно, через некоторое время я сдался ... может быть, выувидеть то, что я не могу.
Я компилирую с Visual Express 2008, с флагами:
/ Gd __cdecl соглашение о вызовах
/ O2 максимизировать скорость
/ TC компилировать всефайлы в формате .c
header:
#ifdef __cplusplus
extern "C" {
#endif
int __cdecl _intFunc(void); // tried without __cdelc as well
int (*_get_TYPE_MODE)(void) = NULL;
...
...
#ifdef __cplusplus
}
#endif
src:
int __cdecl _intFunc(void){return 0;}; // tried without __cdelc as well
_get_TYPE_MODE = _intFunc; // tried &_intFunc as well.
Это приводит к следующим ошибкам:
src\ sc (61): ошибка C2373: '_get_TYPE_MODE': переопределение;модификаторы различных типов
src \ hh (94): см. объявление '_get_TYPE_MODE' src \ sc (61): предупреждение C4047: 'initializing': 'int' отличается по уровням косвенности от 'int (__cdecl *)) (void) '
РЕДАКТИРОВАТЬ:
Когда я меняю опцию компилятора с / Gd на / Gz (функционирует как __stdcall), в моем коде не возникает никаких проблем, но вкод других мест не будет компилироваться.