![]() |
|
Модераторы: bsa |
![]()
|
|
| Mormishka |
|
|||
|
Бывалый ![]() Профиль Группа: Участник Сообщений: 236 Регистрация: 25.8.2010 Репутация: нет Всего: нет |
Есть ли возможность как не писать несколько раз тип данных в функции
void f(double x1,double x2) |
|||
|
||||
| asmdzen |
|
|||
![]() ![]() ![]() Профиль Группа: Участник Сообщений: 345 Регистрация: 28.11.2010 Репутация: 3 Всего: 5 |
Mormishka, template?
|
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 21 Всего: 135 |
Mormishka, более 4-х параметров - правило плохого тона, а 3-4 раза повторить в описании и потом сказать IDE - сделай имплементацию - влом?
Или интересуют возможности стандарта? Если второе - то не проще ли почитать сам стандарт? Там всё сказано, причём однозначно. Не то, что здесь на форуме "собирать мнения"... -------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Mormishka, нет нельзя. Сколько параметров, столько и типов. Тем более что, как заметил borisbn, более 4-х параметров - признак плохого тона или ошибки дизайна. Так что, от пары повторений ты не умрешь.
|
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
а мне всегда нравилась CreateProcess
-------------------- Обижено школьников: 8 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
WinAPI - самый достойный (из известных мне) пример ужасного дизайна. И функции выполняющие не то, что следует из их названия (CreateFile, ClearCommError, ...) и миллион параметров у функций, когда большинство из них мало кем используются, выполнение большого спектра задач одной функцией... |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
bsa, не понял, CreateFile не создаёт объект ядра файл? А что же она тогда делает?
-------------------- Обижено школьников: 8 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
она много чего делает. Например:
получает хендл текущей стандартной консоли (кстати вполне легальный код). с названием "СоздатьФайл" как-то не вяжется, не правда-ли? |
|||
|
||||
| boostcoder |
|
|||
![]() pattern`щик ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 5458 Регистрация: 1.4.2010 Репутация: 20 Всего: 110 |
bems,
|
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
отлично вяжется. консольный хендл ведет на file object. Как и всякие пайпы и девайсы.
Вы просто не умеете это готовить Добавлено @ 00:24 Может это новость, скажу на всякий случай. Этот хендл можно и читать/писать функциями ReadFile/WriteFile. чтобы программа получившая файловый хендл стандартного вывода (например) не обязана была думать что там - файл на диске, консоль или пайп, созданный другой программой. Это сообщение отредактировал(а) bems - 20.4.2011, 00:24 -------------------- Обижено школьников: 8 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
с чего вы решили что "не умеете"? еще один пример, из текущего проекта. Изменение даты модификации существующего файла
При чём здесь слово Create ? |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
к тому, что создаёт файловый объект. То что ты говоришь смахивает на претензию к оператору new за то что он открывает файл, а не создаёт новый (когда применяется с каким-нить классом "файл", открывающим файл в конструкторе)
-------------------- Обижено школьников: 8 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
bems, Это спор ниочем. Кому-то нравится, кому-то нет...
мне лично пофиг, я уже привык. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
Нет, это очень предметный спор. Название функи в точности соответствует тому что она делает
CreateMutex CreateThread CreateEvent CreateFile CreateProcess CreateFileMapping Апи очень последователен: есть объект ядра, значит есть функция, где первое слово Create, а дальше - название объекта -------------------- Обижено школьников: 8 |
|||
|
||||
| volatile |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 2107 Регистрация: 7.1.2011 Репутация: 16 Всего: 85 |
Кстати создать файл
Как-то без слова Create теперь даже не воспринимается |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
В общем случае это разные хендлы. Если стандартный вывод перенаправлен, то CreateFile("CONOUT$" возвращает не то, что GetStdHandle
Добавлено через 9 минут и 41 секунду то есть хендлы конечно же в любом случае разные, я про сам объект говорю. -------------------- Обижено школьников: 8 |
|||
|
||||
| xvr |
|
||||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Не хватает еще одного слова -
|
||||
|
|||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
Ну ты программист или куда? Конечно ж объект, потому что всё суть объекты
-------------------- Обижено школьников: 8 |
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
bems, вот цитата из документации на CreateFile:
Согласись, прикладному программисту должно быть глубоко фиолетово от того, что происходит внутри системы. Он захотел открыть файл, файл открылся. А то, что система для этого сделала миллион операций, его волновать вообще не должно. |
|||
|
||||
| bems |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
А вот описалово писали уже для таких как ты, которые за деревьями леса не видят. Пришлось перечислить всякие file, file stream, directory, physical disk и тд.
Также для детей природы есть такой топик http://msdn.microsoft.com/en-us/library/ms...28VS.85%29.aspx Люди, которым фиолетово работают в бухгалтерии. Им действительно не нужно знать что такое логарифм, чтобы считать сложные проценты. Это сообщение отредактировал(а) bems - 20.4.2011, 18:46 -------------------- Обижено школьников: 8 |
|||
|
||||
| xvr |
|
|||
|
Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 7046 Регистрация: 28.8.2007 Где: Дублин, Ирландия Репутация: 35 Всего: 223 |
Ну если подходить ко всему с точки зрения ядра, то Mutex надо было назвать Mutant. Ибо в ядре он именно так называется
|
|||
|
||||
| bsa |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 9185 Регистрация: 6.4.2006 Где: Москва, Россия Репутация: 85 Всего: 196 |
Т.е. ты считаешь, что для того, чтобы работать таксистом, необходимо не только уметь хорошо водить машину и знать местность, но и понимать алгоритмы работы прошивки микроконтроллера двигателя, а так же знать в каком контуре повысится давление при нажатии вон на ту кнопку? Лично я считаю, что системным программистам одно, прикладным другое, а вэб-дизайнерам третье. И незачем все смешивать в одну кучу. Система очень сложная, и, если отвлекаться на внутреннее устройство ядра системы, можно не сделать свою работу в срок. Если ты считаешь, что в документации пользователя нужно оперировать терминами внутреннего устройства девайса - это твое право. Только имей в виду, что ты можешь заблуждаться. Я, например, считаю, что в документации должно быть в первую очередь написано то, что я получу на выходе при подаче чего-то на вход. А названия функций - это краткое описание. Если ты не знаешь WinAPI, то для того, чтобы понять код, нужно вдумчиво читать документацию на каждую встречную функцию. Еще пример. Мне нужна работа с СОМ портом. В частности, узнать, сколько байт во входном и выходном буферах. Так вот, ни одна функция, отвечающая за получение информации не позволяет это получить. Зато есть магическая функция ClearCommError, которая кроме того, что сбрасывает флаги ошибок порта (ну в принципе следует из ее названия), еще и позволяет получить определенную информацию о состоянии порта. Догадаться не используя поиск по примерам и не перечитывая все описания НЕВОЗМОЖНО! |
|||
|
||||
| bems |
|
||||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3400 Регистрация: 5.1.2006 Репутация: нет Всего: 88 |
Во-вторых понятие "объект ядра" вводится именно в винапи, прикладному коду не нужно знать подробностей, но примерное представление имень необходимо. нет, таксисту не надо. но ты не таксист, ты программист, это инженерная специальность. А веб-программистам нужно знать веб-сервер, даже если по началу сначала кажется что "я нажимаю кнопочку и это работает"
Когда ты используя CreateFile открываешь ком-порт, то получаешь хендл на реальный FILE_OBJECT, обслуживаемый соответствующим драйвером. Но файловый объект он больше для поточного обмена данными, а драйвероспецифичные вещи всю жизнь делались посылкой драйверу ioctl. И это есть в msdn, да. в этом случае указывается тот же хендл файлового объенкта, но он служит скорее неким ключем у нужному DEVICE_OBJECT. Исходя их этого, уж не является ли тем несуществующим способом, о котором ты говоришь вызов DeviceIoControl с кодом IOCTL_SERIAL_GET_COMMSTATUS? кстати эта штука тоже заодно сбрасывает флаги. Если поведение драйвера делает из этих вещей одну цельную операцию, то не удивительно что разработчики апи сделали это одним вызовом. Это сообщение отредактировал(а) bems - 21.4.2011, 00:21 -------------------- Обижено школьников: 8 |
||||
|
|||||
![]()
|
| Правила форума "C/C++: Для новичков" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, bsa. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | C/C++: Для новичков | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |