2016-11-24 1 views
3

Использование gcc 4.8.4 -Wall -Wextra -Wpedantic. Я хочу использовать argv для исполняемого имени и не нуждаюсь в argc.Как избавиться от предупреждения неиспользуемого параметра в C с gcc 4.8.4 [-Wunused-parameter]

Если я

int main(int argc, char *argv[]) 

Я получаю это предупреждение:

abc.c:5:14: warning: unused parameter ‘argc’ [-Wunused-parameter] 

В прошлом я только что сделал

int main(int, char *argv[]) 

избавиться от предупреждения, но это может были C++. Теперь я получаю сообщение об ошибке:

abc.c:5:1: error: parameter name omitted 

Есть ли способ получить доступ к ARGV и не получить предупреждение о не обращается ARGC (с НКОЙ предупреждение включено)?

+0

С '(ничтожной) ARGC,' как заявление в 'main' (не применяется к самому определению). –

+0

@WeatherVane int main ((void) argc, char * argv []) дает ошибку компиляции – Scooter

+0

Я обновил комментарий. –

ответ

4

Мой комментарий был неясным: как этот

int main(int argc, char *argv[]) 
{ 
    char *prog = argv[0]; 
    (void)argc; 
    return 0; 
} 
+0

Интересно. Он просто выполняет бросок и не хранит его нигде, или его больше? Некоторые уточнения могут стоить того. – saeleko

+0

@LudaOtaku Я всегда просто писал 'argc;' без '(void)', но никогда не нуждался в аргументе функции, а только в локальной переменной, пока кто-то не сообщил, что правильный путь - так, как я ответил. Извините, ссылок нет. –

+0

Это прекрасно, я думаю, что это достаточно ясно, это просто неиспользуемый оператор, а не специальный синтаксис, чтобы сообщить компилятору в какой-то степени игнорировать эту переменную. Я был смущен, потому что я обычно просто комментирую переменные, которые мне еще не нужны, и намеренно оставляют предупреждения для аргументов функции, поэтому я знаю, что я еще не закончил писать эту функцию. Однако я по-прежнему полагаю, что это не должно делаться для основного, поскольку это может привести к segfault в случае, если в argv недостаточно параметров командной строки. Это нормально для отладки, а не для выпуска. – saeleko

Смежные вопросы