首页 > 其他分享 >多个C文件混合编译,涉及函数相互调用,地址传递要注意的!

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

时间:2023-08-05 23:55:05浏览次数:34  
标签:pr 调用 函数 char 编译 地址 include printf main

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文件的函数 都申明一遍。
(涉及到编译环节,函数对内存堆方面的知识,我也还没搞清楚,暂时只需要知道这样做。)

 

标签:pr,调用,函数,char,编译,地址,include,printf,main
From: https://www.cnblogs.com/zlxxc/p/17608888.html

相关文章

  • python中如何实现链式调用
    Python中实现链式调用通常使用方法链(MethodChaining)技术。方法链可以通过在每个方法末尾返回实例本身(即self)来实现。如:classPerson:def__init__(self,name,age):self.name=nameself.age=agedefset_name(self,name):self.name......
  • 虚拟机 中 centos8 ens33 无ip地址 解决
    执行以下命令#查看托管状态nmclin#显示disabled则为本文遇到的问题,如果是enabled则可以不用往下看了#开启托管nmclinon#重启systemctlrestartNetworkManager然后就可以继续玩耍了......
  • 系统调用
    系统调用系统调用是什么:  系统调用是用户在编程时调用的操作系统功能。系统调用的作用:  系统调用是操作系统提供给编程人员的唯一接口;使CPU状态从用户态陷入内核态的唯一途径。典型系统调用举例:每个操作系统都提供几百种系统调用(进程控制、进程通信、文件使用、目录操作......
  • C# 如何调用C++ dll string类型返回
    这篇文章主要介绍了C# 如何调用C++ dll string类型返回问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教 −目录C#调用C++dllstring类型返回C++端:(定义返回数据为结构体Vector4)C#端:(接收返回的结构体Vector4)C#调用C++dll类型......
  • ITK在C++文件里面,可以这样调用开旁路的函数
    问题:如果直接在c++文件引入开旁路函数POM_AM__set_application_bypass,是编译不通过的(PS:好像是因为开旁路函数是用C写的,和C++不兼容,具体也不是很懂的,有懂的大佬,可以帮忙评论解答下) 解决方法:在c++文件前面加上这行extern"C"intPOM_AM__set_application_bypass(logicalbypa......
  • 网络接口dhcp失败时会获得一个169.254.x.x的IP地址
    最开始发现这个现象是在windows上面,之前以为是dhcp失败后,会有个随机值作为IP地址,以为是个垃圾数据,是windows特有的行为。最近一个项目,基于buildroot构建,用到4G上网功能,在开发其他功能,一直没插SIM卡,总发现4G接口会拿到一个奇怪的IP地址169.254.118.160。测试把这个问题当作一个bug......
  • 函数(void *) 被谁调用了——图像采集卡经验总结
    一块图像采集卡上有两个CameraLink接口,程序里“采集卡”理解为:一个接口就是一个采集卡。即工控机上插一块,就是两个采集卡对象。【问题】函数(void*)被谁哪个采集卡调用了?下面通过IKap、Matrox、Silicon三个采集卡的案例来理解1、2、3、Windows的创建线程函数,LPVOID其实......
  • mysql源代码编译安装(可自拟版本)
    mysql源代码编译安装(可自拟版本)centOS7mysql5.6.40为例准备关闭防火墙的条件下1.yum安装yuminstallncurses-devellibaio-develgccmakecmake-y2.rpm查询一下rpm-qancurses-devellibaio-devel3.创建mysql用户,用于授权目录-s/sbin/nologin不允许用户进行任......
  • Go语言Http调用之Get、Post请求详解
    HTTP 调用需要通过 http 包里的 Client 结构体里的 Do 方法去实现,因此需要先声明一个 Client 结构体变量,该结构体可以设置超时时间等配置。对于一个请求里的 URL,查询参数,请求 method 等参数,需要 http 包里的 Request 结构体去封装。我们可以通过 NewRequestWith......
  • 使用 backward-cpp 打印调用堆栈
    下载backward-cpp:https://gitee.com/zsy26226/backward-cpp.git使用方法:一、1. 将backward.hpp文件复制到工程中。2. 在主函数所在的cpp文件中添加:#include<backward.hpp>namespacebackward{backward::SignalHandlingsh;}//namespacebackward......