предупреждение: несовместимое неявное объявление встроенной функции ‘xyz’

Существуют более короткие способы сделать это, как говорили другие, но вы также можете проверять каждый символ, пока не встретите второй пробел самостоятельно, а затем вернуть соответствующую подстроку.

static string Extract(string str)
{
    bool end = false;
    int length = 0 ;
    foreach (char c in str)
    {
        if (c == ' ' && end == false)
        {
            end = true;
        }
        else if (c == ' ' && end == true)
        {
            break;
        }

        length++;
    }

    return str.Substring(0, length);
}
158
задан Eric Leschinski 11 June 2015 в 18:01
поделиться

1 ответ

В языке C использование ранее необъявленной функции составляет неявное объявление функции. В неявном объявлении тип возврата int , если я правильно помню. Теперь в GCC есть встроенные определения для некоторых стандартных функций. Если неявное объявление не соответствует встроенному определению, вы получите это предупреждение.

Чтобы решить проблему, вы должны объявить функции перед их использованием; обычно это делается включением соответствующего заголовка. Я рекомендую по возможности не использовать флаги -fno-builtin - * .

Вместо stdlib.h вы должны попробовать:

#include <string.h>

Вот где strcpy и strncpy определены, по крайней мере, согласно справочной странице strcpy (2).

Функция exit определена в stdlib.

262
ответ дан 23 November 2019 в 21:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: