MSDN.WhiteKnight - Stack Overflow answers
Ответ на "Зачем указывать имя параметра в прототипах?"
Answer 1108179
Вероятно, речь о том, что компилятор может при выводе сообщения об ошибке несоответствия типов указать имя параметра, который задан неправильно, для удобства исправления ошибки. Это, впрочем, не реализовано в Visual C++ (VS 2017), хотя реализовано в GCC. Возьмем такой ошибочный код:
fread(nullptr,"Hello, world",0,nullptr);
Вывод Visual C++:
error C2664: "size_t fread(void *,size_t,size_t,FILE *)": невозможно преобразовать аргумент 2 из "const char [13]" в "size_t"
Указан только номер параметра (хотя в прототипе есть имена).
Вывод GCC:
main.cpp:15:19: error: invalid conversion from 'const char*' to 'size_t' {aka 'long unsigned int'} [-fpermissive] 15 | fread(nullptr,"Hello, world",0,nullptr); | ^~~~~~~~~~~~~~ | | | const char* In file included from /usr/local/include/c++/9.2.0/cstdio:42, from /usr/local/include/c++/9.2.0/ext/string_conversions.h:43, from /usr/local/include/c++/9.2.0/bits/basic_string.h:6493, from /usr/local/include/c++/9.2.0/string:55, from /usr/local/include/c++/9.2.0/bits/locale_classes.h:40, from /usr/local/include/c++/9.2.0/bits/ios_base.h:41, from /usr/local/include/c++/9.2.0/ios:42, from /usr/local/include/c++/9.2.0/ostream:38, from /usr/local/include/c++/9.2.0/iostream:39, from main.cpp:1: /usr/include/stdio.h:709:53: note: initializing argument 2 of 'size_t fread(void*, size_t, size_t, FILE*)' 709 | extern size_t fread (void *__restrict __ptr, size_t __size, | ~~~~~~~^~~~~~
Здесь в последней строке указано имя параметра.
Кроме того, наличие имен параметров полезно для всплывающих подсказок в IDE или для генераторов документации. Так что да, правильно написано, что рекомендуется их указывать.
Content is retrieved from StackExchange API.
Auto-generated by ruso-archive tools.