Почему ошибка: переопределение; предыдущее определение y0 было «функция»? - PullRequest
0 голосов
/ 06 июля 2018

Единственное, что написано в коде:

#include <iostream>
using namespace std;


int x0, y0;

И при компиляции выдает ошибку: "y0": переопределение; предыдущее определение было «функция»

1 Ответ

0 голосов
/ 06 июля 2018

Кажется, что y0 - встроенная функция в gcc (и, возможно, некоторых других компиляторах), см .:

https://gcc.gnu.org/onlinedocs/gcc/Other-Builtins.html

А затем просмотрите:

Вне строгого режима ISO C (-ansi, -std = c90, -std = c99 или -std = c11) функции ... y0 ... могут обрабатываться как встроенные функции ...

Итак, tl; dr , используйте другое имя.

Вы можете увидеть полезное сообщение об ошибке, которое gcc генерирует здесь , хотя, по крайней мере, в gcc 8.1 это только предупреждение:

prog.cc: 4: 9: предупреждение: встроенная функция 'y0' объявлена ​​как нефункция [-Wbuiltin-объявление-mismatch] int x0, y0;

Итак, в следующий раз, чтобы вы не проголосовали против вас (хотя я не - на этот раз), пожалуйста:

  • включите полный текст сообщения об ошибке в свой вопрос (я имею в виду на самом деле, почему бы и нет?)
  • сообщите нам, какой компилятор вы используете (марку и версию)

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...