函数的存储类型
如图所示,我声明了一个static的函数,在另外一个文件同样能够调用这个函数,可书上说static的存储类型只有内部链接,不能在定义它的文件之外的地方直接调用,这是为什么。 本帖最后由 村里小黑 于 2021-9-22 11:08 编辑你把函数定义在了8.h文件,然后在9.C文件的头,引用了8.h这个文件,这样的话相当于把这个函数写在了9.c中,所以你可以在8.h之外9.c的地方调用,如果你把#include 8. h去掉,那么就会出现找不到出现错误。也就是说你这么写,他还是处于一个内部链接的状态 村里小黑 发表于 2021-9-22 11:06
你把函数定义在了8.h文件,然后在9.C文件的头,引用了8.h这个文件,这样的话相当于把这个函数写在了9.c中, ...
那如何实现一个我想要的情况呢?就是我声明为static无法在其它文件访问,而声明为extern就可以在外部文件访问 梦回连营 发表于 2021-9-22 11:33
那如何实现一个我想要的情况呢?就是我声明为static无法在其它文件访问,而声明为extern就可以在外部文件 ...
string.h
#ifndef _STRING_H_
#define _STRING_H_
void put_string(char code);
#endif
string.c
#include "string.h"
#include <stdio.h>
static const char *value(size_t index) {
static const char *string[] = {
"1234",
"qwer",
"hello"
};
return string;
}
void put_string(char code) {
if(code == '1') printf("%s\n", value(0));
else if(code == 'q') printf("%s\n", value(1));
else if(code == 'h') printf("%s\n", value(2));
}
main.c
#include "string.h"
int main(void) {
put_string('1');
put_string('h');
return 0;
}
编译
gcc -g -Wall -o main main.c string.c 开卷有益,多多益善····
页:
[1]