6771 / 2740 / 384
Регистрация: 17.02.2013
Сообщений: 4,048
1

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

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

Author24 — интернет-сервис помощи студентам
Изучаю написание драйверов для пользовательского режима Виндов. Для начала на малознакомом мне 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
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
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
6770 / 4564 / 1843
Регистрация: 07.05.2019
Сообщений: 13,726
04.07.2019, 09:04 2
Лучший ответ Сообщение было отмечено Ethereal как решение

Решение

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

Решение

Цитата Сообщение от Ethereal Посмотреть сообщение
(lpReserved);
Обычно все-таки делают так:
C++
1
(void)lpReserved;
Как раз чтобы
Цитата Сообщение от oleg-m1973 Посмотреть сообщение
компилятор не выдавал предупреждение unused parameter.
2
Эксперт С++
8972 / 4318 / 960
Регистрация: 15.11.2014
Сообщений: 9,760
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
07.07.2019, 00:59
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
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
Ответ Создать тему
Опции темы

Новые блоги и статьи
Из чего и как собрать свой домашний кинотеатр
bt_guru 21.01.2025
Создание домашнего кинотеатра: от идеи до реализации В современном мире домашний кинотеатр стал неотъемлемой частью комфортного жилого пространства, предоставляя возможность наслаждаться. . .
Ошибки стиральных машин
bt_guru 21.01.2025
Современные стиральные машины представляют собой сложные электронные устройства, оснащенные множеством датчиков и систем контроля. Они способны самостоятельно определять вес загруженного белья,. . .
Копирование (маппинг) объектов в JavaScript
bytestream 21.01.2025
В современной разработке программного обеспечения копирование объектов представляет собой фундаментальную операцию, которая требует особого внимания и понимания. Маппинг объектов в JavaScript – это. . .
Как работать с Apache Kafka в C# .NET
bytestream 21.01.2025
Apache Kafka представляет собой распределенную платформу потоковой передачи данных, которая произвела революцию в области обработки больших объемов информации в реальном времени. Эта система,. . .
Как использовать RabbitMQ в C# .NET
bytestream 21.01.2025
RabbitMQ представляет собой мощный брокер сообщений, который эффективно решает эту задачу, обеспечивая надежную передачу данных между множеством приложений. Этот инструмент реализует протокол AMQP. . .
Как объединить последние коммиты в Git
bytestream 21.01.2025
В мире разработки программного обеспечения система контроля версий Git стала незаменимым инструментом для управления исходным кодом. Одной из наиболее полезных, но порой сложных для освоения функций. . .
Как запушить новую локальную ветку (branch) в удалённый репозиторий Git и отслеживать её
bytestream 21.01.2025
В современной разработке программного обеспечения система контроля версий Git стала неотъемлемым инструментом для эффективного управления кодом и организации командной работы. Одной из ключевых. . .
Как создать директорию и все родительские директории, указанные в пути, с помощью Python
bytestream 21.01.2025
Python предоставляет мощные инструменты для работы с файловой системой через встроенные модули os и pathlib, которые значительно упрощают процесс манипуляции директориями. Эти модули содержат. . .
Как работать с массивами в JavaScript
bytestream 21.01.2025
Массивы в JavaScript представляют собой один из фундаментальных типов данных, который позволяет хранить упорядоченные коллекции различных элементов в одной переменной. Эта структура данных является. . .
Какая максимальная длина адреса (URL) в различных браузерах и стандартах
bytestream 21.01.2025
В современном мире интернет-технологий URL-адреса (Uniform Resource Locator) играют фундаментальную роль в функционировании веб-пространства. Эти уникальные идентификаторы ресурсов стали неотъемлемой. . .
Как сбросить локальный репозиторий до состояния удалённого репозитория Git
bytestream 21.01.2025
При разработке программного обеспечения с использованием системы контроля версий Git разработчики часто сталкиваются с необходимостью синхронизации локального и удаленного репозиториев. Данная задача. . .
Как запретить подсветку выделенного текста с помощью CSS
bytestream 20.01.2025
Подсветка текста при выделении является стандартным поведением браузера, которое не всегда соответствует дизайнерским решениям или функциональным требованиям веб-приложения. Выделение текста может. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru