欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

第二十章:函数声明与头文件

程序员文章站 2023-12-23 19:34:57
...

第二十章:函数声明与头文件

#include <stdio.h>
//定义函数在main之后必须声明,声明的地方是任意的可以在main之外、之内,加不加extern是等价的,且声明可以只写类型不写形参名,且写的形参名和定义的可以不一致,可以只声明不定义,声明次数没有限制
//统一规范要求:main外声明一次,定义与声明形参一致,main内调用
extern int my_strlen(char str[]);//等价int my_strlen(char str[]);====int my_strlen(char)====int my_strlen(char str[]);int my_strlen(char str[]);
int main(void)
{
    printf("len=%d\n",my_strlen("abcd"));
    return 0;
}

int my_strlen(char str[]){
    int i=0;
    while(str[i]!='\0'){
        i++;
    }
    return i;
}



定义在main之前可以不声明

int my_strlen(char str[]){
    int i=0;
    while(str[i]!='\0'){
        i++;
    }
    return i;
}
int main(void)
{
    printf("len=%d\n",my_strlen("abcd"));
    return 0;
}

多文件编译
main.c

extern int my_strlen(char str[]);//必须声明
int main(void)
{
    printf("len=%d\n",my_strlen("abcd"));
    return 0;
}

my_strlen.c

int my_strlen(char str[]){
    int i=0;
    while(str[i]!='\0'){
        i++;
    }
    return i;
}	

如果需要调用多个函数,就要声明多个,将函数声明放在头文件于是有

main.c

#include "mystrlen.h"
#include <stdio.h>
int main(void)
{
    printf("len=%d\n",my_strlen("abcd"));
    return 0;
}

my_strlen.c

int my_strlen(char str[]){
    int i=0;
    while(str[i]!='\0'){
        i++;
    }
    return i;
}	

mystrlen.h

extern int my_strlen(char str[]);

如果引入了多个头文件有重复声明,为了只声明一次
mystrlen.h

extern int my_strlen(char str[]);

my_strlen.c

int my_strlen(char str[]){
    int i=0;
    while(str[i]!='\0'){
        i++;
    }
    return i;
}	

第一种方案
main.c

#pragma once
#include <stdio.h>
#include "mystrlen.h"

int main(void)
{
    printf("len=%d\n",my_strlen("abcd"));
    return 0;
}

第二种方案

#ifndef _MYSTRLEN_H
	define _MYSTRLEN_H
	extern int my_strlen(char str[]);
#endif

#include "mystrlen.h"

int main(void)
{
    printf("len=%d\n",my_strlen("abcd"));
    return 0;
}
相关标签: C c语言

上一篇:

下一篇: