extern全局函数

转:https://www.cnblogs.com/JCSU/articles/1726807.html

复制代码
/************************************************************************/
/* hello.h                                                              */
/************************************************************************/
#ifndef _HELLO_H_
#define _HELLO_H_

#define MAX_FILE_LEN 100

int MaxValue(int x, int y);
int MinValue(int x, int y);

#endif
复制代码
复制代码
/************************************************************************/
/* hello.c                                                              */
/************************************************************************/
#include "hello.h"

int MaxValue(int x, int y)
{
    return x > y ? x : y;
}

int MinValue(int x, int y)
{
    return x > y ? y : x;
}
复制代码
复制代码
/************************************************************************/
/* main.c                                                               */
/************************************************************************/
#include <stdio.h>

extern int MaxValue(int x, int y);
extern int MinValue(int x, int y);

int main(void) 
{
    printf("The max of (2, 3) is: %d\n", MaxValue(2, 3));
    printf("The min of (2, 3) is: %d\n", MinValue(2, 3));
    getchar();
    return 0;
}
复制代码

定义与声明:

(1)定义只能有一次,声明可以有多次

(2)函数在默认情况下是整个程序可见的,对于函数的定义和声明,编译器实际上在前面加了extern,再手动加extern关键字没有必要

(3)怎样声明而不定义一个变量?即extern int var;

 

【参考】

理解C语言中的extern关键字:http://www.geeksforgeeks.org/archives/840 

 

posted @   sgggr  阅读(231)  评论(0编辑  收藏  举报
编辑推荐:
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
点击右上角即可分享
微信分享提示