You need to enable JavaScript to run this app. C语言模块化开发中编译调用writeLog函数出现报错问题
优惠活动
大模型
产品
解决方案
定价
更多

C语言模块化开发中编译调用writeLog函数出现报错问题

问题核心成因
  • utils.c 缺失必须的标准头文件:当前文件只引入了 stdlib.h、string.h,但代码里用到的 FILE 类型定义、fopen() / fprintf() 的函数声明全部来自 stdio.h。高版本的C编译器默认会将“未声明就直接调用函数”的行为升级为编译错误,而非仅输出警告,同时会因为无法识别 FILE 类型抛出语法类报错。
  • 项目没有创建 utils.h 头文件:main.c 代码里直接写了 #include "utils.h",但实际项目里根本没有这个头文件的话,编译器会直接报“找不到对应头文件”的致命错误;就算补了空的头文件,只要内部没有声明 writeLog 的函数原型,还是会触发和上面一样的未声明函数调用报错。
对应修复步骤
  1. 给 utils.c 补全头文件引入,在文件最开头加上 #include <stdio.h>,把IO操作依赖的类型和函数声明补齐。
  2. 在项目根目录新建 utils.h 头文件,写入带防重复引入守卫的函数声明:
    #ifndef UTILS_H
    #define UTILS_H
    // 向所有引入该头文件的源文件暴露writeLog的函数原型
    int writeLog(char const *text);
    #endif
    
  3. 重新执行编译命令 cc main.c utils.c -o myapp,即可正常完成编译生成可执行程序。

内容的提问来源于stack exchange,提问作者neves neves

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.24 01:54:02