#c
#c
Вопрос:
test.h
#ifndef TEST_H_INCLUDED
#define TEST_H_INCLUDED
int func(void);
typedef int (*FPTR)(void);
#endif // TEST_H_INCLUDED
функция.c
#include "test.h"
static int x = 22; // persistent with external linkage.
int func(void)
{
extern int x; // Referencing declaration
static int count = 0; // persistent within block
printf("%d : %dn", count, x);
return 1;
}
FPTR funcptr = func; // persistent with external linkage. ??
main.c
#include "test.h"
#include <stdio.h>
extern funcptr; // referencing declaration ??
int main(void)
{
func();
funcptr(); // Compile Time Error Here
return 0;
}
Это завершается ошибкой called object ‘funcptr’ is not a function or function pointer
.
Нарушаю ли я здесь какие-либо кардинальные правила?
Ответ №1:
Неправильный синтаксис; должно быть
extern FPTR funcptr;
потому что в extern
объявлении все еще необходимо указывать тип.
И вам лучше вызвать его с помощью (*funcptr)()
, которая, по крайней мере, более удобочитаема.
Комментарии:
1. упс! это было просто.. Извините за беспокойство, ребята, и спасибо, что уделили время. Также принимаю ваше второе предложение.