На самом деле это простой вопрос, относящийся к Linux (в отличие от Windows или Mac).
Как вы генерируете предупреждающее сообщение из компилятора C или C ++, в котором должно быть слово «подозрительно», и оно должно ссылаться на (-Wmain
).
(Обновить)
Спасибо, Boann — я получил некоторые из этих предупреждений, но у меня также есть Error — error: ‘:: main’ должен возвращать «int».
Причина, по которой я задаю этот вопрос, состоит в том, что неделю назад мой компилятор (GCC 4.8.1) выпустил это предупреждение с надписью «подозрительно» и вызвано Wmain. Поэтому я поставил -Wno-main, и предупреждение ушло, и оно скомпилировалось нормально. Совсем недавно он начал жаловаться, что делает его настоящей ошибкой, а не компилирует. Так что я немного обеспокоен тем, что материнский корабль каким-то образом скрытно обновил мой компилятор по Интернету, без моего ведома, и изменил его, чтобы он воспринимался как ошибка. (Я, вероятно, использовал ‘int4’ в качестве возвращаемого типа, который у меня всегда есть typedef’d как подписанный long int.
Я отмечаю, что на man-странице g ++ есть ссылка на -Wmain, поэтому она должна быть для чего-то, но какое предупреждение есть, которое не отменяется ошибкой ??
По смещению 557284 (десятичное число) исполняемого файла g ++ я обнаружил «Предупреждать о подозрительных объявлениях« main ».
Для чего это стоит,
struct suspicious {};
int main(suspicious) {}
Выход с g++ -Wall
, GCC 4.8.2:
предупреждение: первый аргумент ‘int main (подозрительный)’ должен быть ‘int’ [-Wmain]
Если вы ссылаетесь на -Wmain
Параметр GCC, вы получите предупреждение, дав main
нечетные аргументы, нечетный тип возвращаемого значения или его static
связь. Это сделает это:
static float main(float x) {
return 0;
}
Составлено с gcc -Wmain
, он отображает эти предупреждения; на самом деле они не содержат слова «подозрительно»:
warning: return type of 'main' is not 'int'
warning: first argument of 'main' should be 'int'
warning: 'main' takes only zero or two arguments
warning: 'main' is normally a non-static function
Я только что скачал источники для gcc 4.8.1 и поискал во всех соответствующих файлах слово «подозрительный».
Существует несколько случаев, но, насколько я могу судить, сообщение об ошибке для исходного файла на C или C ++ не может содержать слово «подозрительный». Возможно, но маловероятно, что произошла локальная модификация.
Возможно ли, что вы ошибаетесь в том, что говорится в сообщении об ошибке? Если у вас есть журнал, содержащий сообщение об ошибке, обновите свой вопрос, чтобы показать точное сообщение, которое вы получили.
Если вы обеспокоены тем, что ваш компилятор может быть обновлен без вашего ведома, вы можете проверить временную метку исполняемого файла компилятора и любых программ, которые он вызывает (используйте gcc -v
чтобы проверить это). Но сам gcc не обновляется автоматически. Если вы используете его в системе, управляемой кем-то другим, следует ожидать автоматического обновления. Если вы управляете системой самостоятельно, возможно, вы настроили ее для обновления программного обеспечения без ручного вмешательства; если так, то это не проблема gcc. Я не знаю, о каком «материнском корабле» ты говоришь.