2015-10-23 4 views
1

Я пытаюсь бежать к следующей функции как часть более крупного проекта:Xcode ошибка «Конфликтующие типы» работает код C для очень простой функции

#include <memory.h> 

void bzero(char *s, int n) 
{ 
    memset (s, 0, n); 
} 

Я получаю следующее сообщение об ошибке: «Конфликтующие типы для 'bzero' "

Я не понимаю проблему, так как все проекты отлично работают в Linux. Поэтому я фактически пытаюсь перенести его на Mac и создавать и исполняемый файл с помощью Xcode, но он даже не будет создан.

ответ

2

В вашей системе уже есть функция bzero (устаревшая функция POSIX, которая теперь удалена) с другим прототипом. Назовите свою функцию иначе, как my_bzero.

+0

Спасибо, человек! Это сработало. Возможно, вы также можете помочь мне с другой повторяющейся ошибкой сборки, которую я имею в каждом файле моего проекта. Он продолжает давать мне сообщение «control достигает конца не-void функции». Я знаю, что это означает, что функция MIGHT достигает конца, не возвращая ничего, или, по крайней мере, это означает, что компилятор считает, что это может произойти. Тем не менее, снова я запускаю этот проект уже много лет на Linux без проблем. Это там способ обойти это? Как, может быть, просто «return 0»? – GuyTal

+1

@GuyTal Вы запускали этот проект в течение многих лет без предупреждения, включенного в вашем компиляторе. Да, добавьте оператор 'return 0;' в конце функции, где вы получили это предупреждение (предполагая, что функция возвращает значение арифметического типа). Если вы хотите продолжить обсуждение этой темы, я предлагаю вам открыть новый вопрос с примером кода. – ouah

0

bzero является нестандартной функцией C, используемой в системном программировании, и это вызывает конфликт в вашей системе. Он имеет прототип

void bzero(void *s, size_t n);