我正在尝试使用Xcode构建项目,但出现以下错误Implicit declaration of function 'clear' is invalid in C99
和Conflicting types for 'clear'
。
这里是代码:
//main.c #include <stdio.h> #include "tree.h" int main(){ clear(); // Implicit declaration of function 'clear' is invalid in C99 return 0; } //tree.c #include <stdio.h> #include "tree.h" void clear(){ ///Conflicting types for 'clear' printf("Command clear.\n"); } //tree.h #include <stdio.h> void clear(); ///Conflicting types for 'clear'
为什么我会收到这些错误和警告?我试图在StackOverflow上搜索解决方案,但是所有相关的答案都是关于没有某种
#include
的情况。
'clear'不是C中的关键字,所以不是这样吗? (来源:http://aboutc.weebly.com/keywords.html)
相关主题(尽管它们实际上是相关的,但不回答我的问题:
感谢您的帮助。
UPDATE!
事实证明,将clear
函数的名称更改为cleark
函数可以解决此问题。不过,这对我来说还没有任何意义。
UPDATE 2!
我的项目基于Mac OS 10.10上Xcode 6.3的command line tool
模板。因此,Xcode会自动向项目的编译器添加一些库和标志。这里最重要的是已添加curses.h
标头,并且此标头已经包含clear()
函数
这里是Conflicting types for 'clear'
错误日志:/Applications/Xcode.app/Contents/Developer/Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.10.sdk/usr/include/curses.h:541:28: Previous declaration is here
我曾尝试从编译器的标志中手动删除-lcurses
,但找不到此类设置。还有什么其他方式可以建立项目吗? (总的来说,我的目标是在项目扩展时能够使用Xcode的调试器)
UPDATE 3!
根据保罗·格里菲思(Paul Griffiths)在下面的评论中发现并发表的内容,问题如下:我确实可以使用Xcode 6.3.1复制这个问题,只显示代码。 由于某种原因,stdio.h似乎包含curses.h
(即,如果您不包含stdio.h,则此问题消失了),而且我一直无法迅速找到一种方法来停止它这样做。这似乎是有问题的,因为如果没有简单易行的方式将其关闭,则标准标头不应将随机符号导入全局名称空间。
我正在尝试在Xcode中构建项目,但遇到以下错误:函数clear的隐式声明在C99中无效,并且对于clear的类型冲突。这是代码://main.c #include ...