Форум программистов, компьютерный форум, киберфорум
C++: COM, OLE, ActiveX
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.74/27: Рейтинг темы: голосов - 27, средняя оценка - 4.74
6556 / 2652 / 364
Регистрация: 17.02.2013
Сообщений: 3,884
1

Для чего эти бессмысленные строчки ?

04.07.2019, 00:41. Просмотров 5299. Ответов 3
Метки нет (Все метки)

Изучаю написание драйверов для пользовательского режима Виндов. Для начала на малознакомом мне C++ (ранее писал только на чистом C, когда не на ассемблере) раз на нем пишут подобное, а потом может переведу на другой, более любимый язык когда все станет ясно что там к чему и почему. Вот такой фрагмент чужого образцово показательного драйвера меня удивил
C
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    (lpReserved);
 
    switch (dwReason)
    {
        case DLL_PROCESS_ATTACH:
            DisableThreadLibraryCalls(hInstance);
            break;
 
        case DLL_PROCESS_DETACH:
            _AtlModule.Term();
    }
 
    // Call the ATL module class so it can initialize
    return _AtlModule.DllMain(dwReason, lpReserved);
}
вроде бы бессмысленной строчкой
(lpReserved);
Значение, равное lpReserved не присваивается ничему.
Просмотр других образцов в Интернете обнаружил другую
C
1
2
3
4
5
6
7
8
9
10
11
12
13
#include "stdafx.h"
#include "resource.h"
#include "rtc_i.h"
#include "dllmain.h"
 
CrtcModule _AtlModule;
 
// DLL Entry Point
extern "C" BOOL WINAPI DllMain(HINSTANCE hInstance, DWORD dwReason, LPVOID lpReserved)
{
    hInstance;
    return _AtlModule.DllMain(dwReason, lpReserved); 
}
вроде бы бессмысленную строчку
hInstance;
с не присваиванием никуда.
Причем она повторялась в образцах от разных авторов.

Так вот что означают эти строчки ? Это какой-то стиль оформления или в этих строчках есть некий таинственный смысл, который, глядя через призму чистого C, не увидеть ?
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
04.07.2019, 00:41
Ответы с готовыми решениями:

Для чего 2 строчки в HTML и звездочка в CSS
Привет. I. Подскажите пожалуйста. Для чего на сайтах вставляют <!DOCTYPE html PUBLIC...

для чего нужны эти метатеги
для чего этот мета <meta name="verify-a" value="0b520cd78df27078c5fb"> и этот <meta...

Объясните, для чего нужны некоторые строчки в коде(using namespace, new, int main)
#include <iostream> using namespace std; //для чего эта строчка int main(void) // что нужно...

Объясните для чего эти строки в коде
Объясните, плс, для чего в коде эти строки ( отметил комментариями в коде): int menu() { char...

3
6072 / 4061 / 1657
Регистрация: 07.05.2019
Сообщений: 12,575
Записей в блоге: 1
04.07.2019, 09:04 2
Лучший ответ Сообщение было отмечено Ethereal как решение

Решение

Цитата Сообщение от Ethereal Посмотреть сообщение
Так вот что означают эти строчки ? Это какой-то стиль оформления или в этих строчках есть некий таинственный смысл, который, глядя через призму чистого C, не увидеть ?
Это чтобы компилятор не выдавал предупреждение unused parameter.
Можно, конечно, просто убрать имя у этого параметра, но это будет менее читабельным
3
13890 / 7424 / 1761
Регистрация: 30.01.2014
Сообщений: 12,420
05.07.2019, 12:04 3
Лучший ответ Сообщение было отмечено Ethereal как решение

Решение

Цитата Сообщение от Ethereal Посмотреть сообщение
(lpReserved);
Обычно все-таки делают так:
C++
1
(void)lpReserved;
Как раз чтобы
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
компилятор не выдавал предупреждение unused parameter.
2
Эксперт С++
8336 / 3891 / 844
Регистрация: 15.11.2014
Сообщений: 8,795
07.07.2019, 00:59 4
Лучший ответ Сообщение было отмечено Ethereal как решение

Решение

Цитата Сообщение от oleg-m1973 Посмотреть сообщение
Это чтобы компилятор не выдавал предупреждение unused parameter.
"это" имеет форму: (void) unused;

авторский же случай диагностируется как:
msvc
warning C4555: expression has no effect; expected expression with side-effect
gcc
warning: statement has no effect [-Wunused-value]
причем не важно: си или с++

Цитата Сообщение от Ethereal Посмотреть сообщение
Так вот что означают эти строчки ?
если и имели когда-то, то сейчас они означают лишь то,
что авторы оригинальных исходников - неаккуратные грязнули.
иначе обратили бы внимание на предупреждения компилятора,
и удалили бы из исходников мусор.
2
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
07.07.2019, 00:59

Заказываю контрольные, курсовые, дипломные и любые другие студенческие работы здесь.

Const unsigned int flags - для чего эти флаги?
Кто может подсказать что это за флаги Const unsigned int flags , для чего они нужны и какие бывают)...

Для чего нужны эти слоты в материнской плате? (фото внутри)
Люди! помогите! скажите для чего эти слоты на материнке, ато сам додуматься не могу...:help:

Не дают покоя эти строчки
if (runner == null){ runner = new Thread(this); runner.start(); } } public void stop(){...

Объясните 35-36 строчки ,что они делают и для чего они ?
//--------------------------------------------------------------------------- #include<iostream.h>...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.