多个C文件混合编译,涉及函数相互调用,地址传递要注意的!

曦系 / 2023-08-06 / 原文

tc.h
#pragma once
char* fun();    //main函数调用到这个函数,但是在其他.c中定义,在头文件申明下先

tacc.c
#include<stdio.h>
char* fun()
{
    printf("saDHAKJHFJ\n");
    int i = 100;
    printf("i = %d\n",i);
    char* pr = (char *)malloc(100);
    *pr = 20;
    printf("*pr = %d\n", *pr);
    printf("pr = %p\n", pr);
    return pr;
}

main.c

#include<stdio.h>
#include"tc.h" 
int main()
{
    char* pn = fun();
    printf("pn = %p\n",pn);
    return 0;
}

 

在不同的 .c 文件中定义函数,进行混合调用的时候,特别是是涉及到地址和指针的传递的时候;
请务必 在  ”头文件”  或者  在  “main.c文件main函数之前”  将其他 .c文件的函数 都申明一遍。
(涉及到编译环节,函数对内存堆方面的知识,我也还没搞清楚,暂时只需要知道这样做。)