Как получить доступ к определенному типу объекта вне его единицы перевода

#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. упс! это было просто.. Извините за беспокойство, ребята, и спасибо, что уделили время. Также принимаю ваше второе предложение.