为什么会出现这个错误? "静态声明函数遵循非静态声明"?

时间:2017-12-01 09:31:53

标签: c static-functions

我正在学习静态函数,并且按照规则我将函数声明为 一个静态函数,然后我无法访问此函数到其他c文件中,如果我尝试访问,那么应该有一个错误" 未定义引用`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 个答案:

答案 0 :(得分:0)

只能在声明它的文件中看到静态变量或函数。

C11标准

  

<强> 6.2.2.3

     

如果声明对象的文件范围标识符或   function包含存储类说明符 static ,.   标识符具有内部链接