Как иметь дело с Предупреждением C4100 в Visual Studio 2008

По некоторым причинам моя Visual Studio 2008 начала показывать предупреждения для кода как: "международное основное (интервал argc, символ ** argv)", который является действительно раздражающим.

Подробное предупреждение ouputs (можно проигнорировать номера строки):
1>. \main.cpp (86): предупреждение C4100: 'argv': не имеющий ссылки формальный параметр
1>. \main.cpp (86): предупреждение C4100: 'argc': не имеющий ссылки формальный параметр

Интересно, существуют ли настройки в Visual Studio 2008, которые были случайно изменены. Или как я должен иметь дело с этим предупреждением?

13
задан ROMANIA_engineer 23 February 2018 в 19:11
поделиться

3 ответа

Если на параметры нет ссылок, вы можете оставить их безымянными:

int main(int, char**)
{
}

вместо

int main(int argc, char** argv)
{
}

. Если вы действительно хотите просто подавить предупреждение, вы можете сделать это, используя параметр командной строки / wd4100 для компилятора или используя #pragma warning (disable: 4100) в вашем коде.

Это предупреждение уровня 4; если вы компилируете с более низким уровнем предупреждения, вы не получите это предупреждение. Уровень предупреждения устанавливается в свойствах проекта (щелкните правой кнопкой мыши проект, выберите «Свойства»; в «Свойства конфигурации» -> C ++ -> «Общие» установите «Уровень предупреждения»).

21
ответ дан 1 December 2019 в 20:29
поделиться

Если вы не используете параметры командной строки, то другая стандартная подпись для main:

int main();
5
ответ дан 1 December 2019 в 20:29
поделиться

Предупреждение C4100 выдается на уровне предупреждения 4, который не является значением по умолчанию, поэтому в какой-то момент кто-то, вероятно, изменил его для вашего проекта.

Вы можете вернуть уровень предупреждения или обратиться к предупреждению более прямо.

Как Джеймс МакНеллис сказал , вы можете отключить предупреждение в C ++, удалив имя параметра из списка параметров. Однако, если код будет скомпилирован как код C, в этом случае вы получите ошибку.

Заголовки Windows определяют макрос UNREFERENCED_PARAMETER () , помогающий справиться с этим предупреждением. Вы можете использовать

UNREFERENCED_PARAMETER( argc);
UNREFERENCED_PARAMETER( argv);

, чтобы отключить предупреждение. Если вы не хотите включать заголовки окон, макрос просто расширяется до использования имени параметра в выражении «ничего не делать»:

#define UNREFERENCED_PARAMETER(P)          \
    /*lint -save -e527 -e530 */ \
    { \
        (P) = (P); \
    } \
    /*lint -restore */
4
ответ дан 1 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

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