0

我正在学习静态函数,并且根据规则,如果我将函数声明为静态函数,那么我无法将此函数访问到其他 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_ */
4

1 回答 1

0

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

C11标准

6.2.2.3

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

于 2017-12-01T09:39:34.840 回答