Работа над проектом и попытка понять, почему я получаю ошибки, которые получаю. Я все еще новичок в C, и это было для меня борьбой. Я открыл буквально 40 или 50 вкладок на эту тему, чтобы попытаться исправить мою проблему, но безрезультатно.C Ошибка программы «Конфликтующие типы для функции»
Мое сообщение об ошибке лежит перед основным, где я прототип функции, которую я предоставил для использования в этом проекте. Эта функция называется utf8_to_codepoint, и она хорошо ... преобразует значения utf8 в значения кодировки Unicode.
В настоящее время единственная ошибка я получаю ложь с моей прототипе утверждением: «конфликтные ситуации для„utf8_to_codepoint“»
я пытался много разных вещей, связанных с указателями, не связанных с указателями, в том числе «Const» и ' unsigned 'и т. д., и ничто не заставило ошибки уйти.
Я все еще борется с указателями, и я не уверен, почему эта функция принимает указатели как свои «параметры». Из того, что я вижу, функция работает только с одним символом за раз (u), и я не понимаю, что делает второй параметр.
Ниже приведено мое прототипирование функции, мой вызов функции и код функции utf8_to_codepoint.
int utf8_to_codepoint(char, int *);
int main(int argc, char **argv)
{
char sampleText[3000];
int lenptr = 3000;
...
for(int i = 0; fgets(sampleText, 3000, fp) != NULL; i++)
{
int temp;
temp = utf8_to_codepoint(sampleText[i], &lenptr);
...
}
UTF8_To_Codepoint Функция
extern unsigned int utf8_to_codepoint(const unsigned char *u,
int *lenptr) {
// Returns 0 if something goes wrong
// Passes back the length
unsigned int cp = 0;
*lenptr = 0;
if (u) {
if (*u < 0xc0) {
cp = (unsigned int)*u;
*lenptr = 1;
} else {
*lenptr = isutf8(u);
if (*lenptr == 0) {
return 0;
}
switch (*lenptr) {
case 2:
cp = (u[0] - 192) * 64 + u[1] - 128;
break;
case 3:
cp = (u[0] - 224) * 4096
+ (u[1] - 128) * 64 + u[2] - 128;
break;
default:
cp = (u[0] - 240) * 262144
+ (u[1] - 128) * 4096
+ (u[2] - 128) * 64 + u[3] - 128;
break;
}
}
}
return cp;
}
Ошибка говорит все. Ваш прототип utf8_to_codepoint отличается от определения реальной функции. –
Второй аргумент/параметр - это ширина или количество цифр, будет работать от 1 до 3, поэтому будет конвертировать 0 до 999 или от 0 до 255, если преобразование в шестнадцатеричное. –
Значение, указанное вторым параметром, устанавливается в функции.Подумайте об этом как о «вне» параметре. Он сообщает вам, сколько символов u используется для генерации кода. –