Почему пришла эта ошибка? "статическое объявление функции следует за нестатическим объявлением"?
Я узнаю о статической функции и, как правило, если я объявляю функцию как статическую функцию, я не могу получить доступ к этой функции в другой файл c, и если я пытаюсь получить доступ, то должна появиться ошибка "undefined reference to` fun", поэтому я объявляю и определяю статическую функцию в файл add.c и add.h и вызываю эту функцию в файл main.c, но я получаю другую ошибку, т. е. "статическое объявление" fun "следует за нестатическим объявлением",сильный текст, поэтому мой вопрос вот почему эта ошибка пришла???? пожалуйста, прости меня за мой плохой английский!!!!
/************** main.c****************/
#include <stdio.h>
#include <stdlib.h>
#include "add.h"
int main(void)
{
printf("%d ", fun());
printf("%d ", fun());
return 0;
}
/***************add.c*************/
#include <stdio.h>
#include "add.h"
static int fun(void)
{
int a=5,b=4;
return a+b;
}
/*********************add.h*************/
#ifndef ADD_H_
#define ADD_H_
static int fun(void);
#endif /* ADD_H_ */
1 ответ
Статическая переменная или функция видна только в файле, где она объявлена.
Стандарт С11
6.2.2.3
Если объявление идентификатора области файла для объекта или функции содержит статический спецификатор класса хранения, идентификатор имеет внутреннюю связь.