Как отключить заголовок «curses.h» (часть «stdio.h в Xcode 6.3 OSX Yosemite), чтобы избежать конфликтующих объявлений функций
Я пытаюсь построить проект в 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
какой-то
«ясно» не является ключевым словом в C, так что это не тот случай, не так ли?
(источник:http://aboutc.weebly.com/keywords.html)
Связанные темы (не отвечайте на мой вопрос, хотя они на самом деле связаны):
Неявное объявление функции sum в C99 недопустимоНеявное объявление функции недействительно в C99Спасибо за любую помощь.
ОБНОВИТЬ!
Оказывается, что изменение названияclear
намерение кcleark
Функция решила проблему. Тем не менее это пока не имеет для меня никакого смысла.
ОБНОВЛЕНИЕ 2!
Я основал свой проект наcommand line tool
шаблон из Xcode 6.3 на OS 10.10. Из-за этого 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 при расширении проекта)
ОБНОВЛЕНИЕ 3! Согласно тому, что Пол Гриффитс обнаружил и опубликовал в комментарии ниже, проблема заключается в следующем:
Я действительно могу повторить эту проблему с Xcode 6.3.1 только с представленным кодом.По какой-то причине stdio.h, кажется, включает curses.h (то есть, если вы не включите stdio.h, эта проблема исчезнет), и я не смог быстро найти способ остановить это, делая это. Это кажется проблематичным, поскольку стандартные заголовки не должны импортировать случайные символы в глобальное пространство имен без простого и очевидного способа его отключения.