Здравствуйте, Аноним, Вы писали:
А>В чем смысл писать так?
А>LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
А>Часто встречаю в примерах WTL/MFC. Вроде же даже дольше набирать, это как-то помогает компилятору при оптимизации?
Оптимизация тут не при чем.
Комментируют, чтобы предотвратить предупреждения компилятора о неиспользуемых аргументах.
На высоком уровне предупреждений компилятора, — опция "/W4" MSVC,- они могут вываливаться сотнями.
Особенно это напрягает на проектах большого объема. В то же время совсем удалять имена неиспользуемых
аргументов нехорошо, так как они могут в любой момент потребоваться.
Здравствуйте, Muxa, Вы писали:
G>>Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.
M>чем этот вариант
Может вызывать предупреждение компилятора о том, что аргумент функции не был использован. Иногда это предупреждение помогает найти опечатку в имени переменной, или другие похожие ошибки, но часто аргумент функции намеренно не используется. В этом случае его имя можно либо опустить, либо писать закомментированным.
Здравствуйте, Аноним, Вы писали:
А>В чем смысл писать так?
А>LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
А>Часто встречаю в примерах WTL/MFC. Вроде же даже дольше набирать, это как-то помогает компилятору при оптимизации?
Если мы говорим об объявлении функции:
void set(int, int, int); // вариант 1void set(int start, int, length, int initValue); // вариант 2void set(int/*start*/, int, /*length*/, int/*initValue*/); // вариант 3
В первом варианте сложновато догадаться что же именно нужно передать в функцию, во втором и третьем варианте первые два значения четко понятны и почти четко понятно третье — и всего лишь благодаря именам переменных.
Если мы говорим об реализации:
void set(int/*start*/, int, length, int initValue, int)
{
// Метод без реализации
(void) length; // в рамках языка С++ данная запись равносильна следующей reinterpret_cast<void>(length)
// start - мы знаем какую смысловую нагрузку несет в себе данная переменная, но в коде она нам пока не нужна.
// length - аналогично start, за исключением того что сама переменная на момент компиляции функции все же существует и при последующем редактировании ф-ии мы можем смело её использовать.
// initValue - аналогично length, за исключением того что компилятор генерирует предупреждение т.к. мы не используем переменную которую объявили (а предупреждение компилятор может рассматривать как ошибку).
// <4я пер-я> - аналогично start, за исключением того что мы понятия не имеем о её смысловой нагрузке.
}
Здравствуйте, Аноним, Вы писали:
А>В чем смысл писать так?
А>LRESULT NotifyHandler(int /*idCtrl*/, LPNMHDR /*pnmh*/, BOOL& /*bHandled*/)
А>Часто встречаю в примерах WTL/MFC. Вроде же даже дольше набирать, это как-то помогает компилятору при оптимизации?
Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.
G>Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.
Здравствуйте, vsb, Вы писали:
vsb>Здравствуйте, Muxa, Вы писали:
G>>>Исключительно для удобства программиста. Так нагляднее видно, какие аргументы принимает функция, зачем они нужны. Ведь обычно от прототипа до определения не одна сотня строк кода и скроллить довольно утомительно. Если убрать комментарии — будет тот же эффект, но тут уже дело вкуса.
M>>чем этот вариант
?
vsb>Может вызывать предупреждение компилятора о том, что аргумент функции не был использован. Иногда это предупреждение помогает найти опечатку в имени переменной, или другие похожие ошибки, но часто аргумент функции намеренно не используется. В этом случае его имя можно либо опустить, либо писать закомментированным.
В данном примере дана декларация; так что разницы никакой.