Xcode11.1(MacOS Catalina)下已包含<stdio.h>仍报printf隐式声明警告求助
这种情况我之前在Catalina搭配Xcode 11的环境里也碰到过,给你几个实用的排查和解决方向:
清理编译缓存并重新构建
Xcode的索引系统偶尔会抽风,导致头文件引用识别异常。你可以试试快捷键Cmd+Shift+Option+K清理Build Folder,然后再重新编译项目,很多时候这种小问题都能解决。检查头文件引用与项目路径配置
确认一下#include <stdio.h>的写法没错(用尖括号是对的,因为是系统标准库头文件),然后去项目的Build Settings里搜索Header Search Paths,看看有没有误加的路径干扰了标准库的查找,确保这个选项里没有和系统库冲突的配置。排查编译选项是否异常
有些自定义的编译宏会影响标准库函数的识别,比如-fno-builtin这类参数会让编译器不识别内置的标准库函数。你可以在Target的Build Settings里搜索Other C Flags,看看有没有添加这类可能导致问题的选项,如果有的话暂时移除试试。验证工具链是否正常
有时候Xcode的Command Line Tools可能没正确安装或关联,你可以在终端运行xcode-select --install重新安装工具链,或者在Build Settings里把C Compiler明确指定为clang(默认应该是clang,但手动指定能排除工具链异常的可能)。测试新建项目是否复现问题
如果上面的方法都没用,试试新建一个空白的C项目,把你的代码复制进去编译。如果新项目没有警告,那大概率是原项目的xcodeproj文件损坏了,你可以考虑迁移代码到新项目,或者修复原项目的配置文件。
另外,如果你是用终端命令行编译的,试试直接运行 clang your_source_file.c,看看会不会出现同样的警告——如果命令行编译正常,那问题就出在Xcode IDE的配置或索引上,重点排查IDE相关的设置。
内容的提问来源于stack exchange,提问作者0xAlon

