|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Что это макрос, после которого можно ставить точку с запятой, понимаю даже я. Но какое отношение всё это имеет к блокировке и что вообще достигает этот код из драйвера VDFS для линукс? lockdep.h: Код: plaintext 1.
vdfs4.h: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 21:35 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Сибирский Пушистый что вообще достигает этот код ... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 21:47 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
После макро-процессинга будет нечто вроде Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
03.02.2021, 22:00 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
mayton, У меня, конечно же, и близко нет 300 айкю, и человек я простой: когда пишу код, то он выполняет какую-то функцию. Но какую функцию выполняет ЭТО? Оно же вообще ничего не делает. Или я ошибаюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 00:08 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Сибирский Пушистый mayton, У меня, конечно же, и близко нет 300 айкю, и человек я простой: когда пишу код, то он выполняет какую-то функцию. Но какую функцию выполняет ЭТО? Оно же вообще ничего не делает. Или я ошибаюсь? Во первых, на сайте www.kernel.org лежат исходники. И там прокомментирован этот макрос. Я попробовал разобраться, но не очень понял о чём они пишут. Но это не код, который что-то должен делать. Это какой-то костыль, который что-то должен проверять. Например, то что у типа структуры "inode" есть поле данных "i_mutex". Иначе оно не будет компилироваться. Зачем это нужно? ХЗ. Код: plaintext 1. 2. 3.
Зачем тут цикл тоже не понятно. Похоже на какой-то грязный хак, когда люди знают как работает компилятор и пытаются его обмануть зачем-то. И я не понимаю, почему указатель на некую переменную может приводиться к void. Не к void*, а к void! Хотя где-то я видел такое. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 00:33 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
a guest Сибирский Пушистый что вообще достигает этот код Специально ничего не делающим этот макрос выглядел бы так: Код: plaintext 1.
... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 00:36 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Сибирский Пушистый Но какую функцию выполняет ЭТО? Оно же вообще ничего не делает. Или я ошибаюсь? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 01:09 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
a guest petrav, пожалуйсто вернись к программированию на 1C. PS: Тебе нужно нам пояснить, почему при таких параметрах условной компиляции этот макрос выглядит именно так: Код: plaintext 1.
Зачем тут цикл, зачем приведение к void и т.д. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 01:21 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petravЗачем тут цикл, зачем приведение к void и т.д. Весь остальной букварь грязных Си-трюков тоже процитировать, начиная с "a=b=c=0" и "++p*=*q++"?.. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 01:49 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov petravЗачем тут цикл, зачем приведение к void и т.д. Весь остальной букварь грязных Си-трюков тоже процитировать, начиная с "a=b=c=0" и "++p*=*q++"?.. Приведённое тобой — это не грязные трюки. Это штатный и очевидный функционал Си. Осталось сверится с таблицей приоритетов операторов. На мои вопросы тебе есть что ответить? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 01:55 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petrav a guest petrav, пожалуйсто вернись к программированию на 1C. В твоей команде на 1С платят мало, потому что твой хлебозавод загибается. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 01:58 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petravНа мои вопросы тебе есть что ответить? Твои вопросы - тоже штатный и очевидный функционал макросов. Параметр используется чтобы компилятор не пропустил инвалидное выражение в нём. Он используется в круглых скобках чтобы обойти грабли с нетривиальными выражениями (гугли "зачем скобки вокруг параметров в макросе"). Он приводится к void чтобы подавить предупреждение о неиспользуемом результате. Он в цикле чтобы обойти грабли взаимодействия с if без кривых скобок (опять гугли "зачем фиктивный цикл в макросах"). Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 02:01 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
a guest petrav пропущено... В твоей команде на 1С платят мало, потому что твой хлебозавод загибается. Объясни, плиз, зачем это (такой цикл) пишут в сишных макросах? И зачем приведение к `void`? Пожалуйста. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 02:05 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Мемберов не обсуждаем! ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 10:40 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Он приводится к void чтобы подавить предупреждение о неиспользуемом результате. Спасибо, этого не знал. В Студии такого преобразования не требуется. По крайней на третьем уровне варнингов. Dimitry Sibiryakov Он в цикле чтобы обойти грабли взаимодействия с if без кривых скобок (опять гугли "зачем фиктивный цикл в макросах"). Да, и это в новинку. Но такой фиктивный цикл используется что бы обрамлять несколько выражений разделённых точкой с запятой. Я так вижу что тут это излишне. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 11:29 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petravЯ так вижу что тут это излишне. То, что конкретно в этом макросе такое не случится, ещё не повод для него нарушать правила написания безопасных макросов. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 13:40 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petrav Но такой фиктивный цикл используется что бы обрамлять несколько выражений разделённых точкой с запятой. Я так вижу что тут это излишне. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 14:38 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Короче, макросы — зло. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:01 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Для тех, кому Си и С++ слишком сложны - были созданы Ява и С-шарп. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:06 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Для тех, кому Си и С++ слишком сложны - были созданы Ява и С-шарп. Ну... это тоже есть. Но главная задача все-таки стояла другая. Поэтому камент не полный. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:15 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Для тех, кому Си и С++ слишком сложны - были созданы Ява и С-шарп. Подмена понятий. :) Страуструп тоже считает макросы злом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:41 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
a guest petrav Но такой фиктивный цикл используется что бы обрамлять несколько выражений разделённых точкой с запятой. Я так вижу что тут это излишне. Инструмент не по делу применён. Кстати, забавно. Поскольку речь явно идёт о блокировках и мьютексах, то зачем макрос, который при данных настройках компилятора, ничего не делает? Они код собирают в однопоточном или многопоточном режиме? Наверное, да. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:44 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Ну так поищи другие определения этого макроса и посмотри при каких условиях они используются. PS: А Страуструп придумал макросы 2.0 - темплейты. Естественно, первую версию он будет считать злом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 15:53 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ну так поищи другие определения этого макроса и посмотри при каких условиях они используются. PS: А Страуструп придумал макросы 2.0 - темплейты. Естественно, первую версию он будет считать злом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 16:24 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Dimitry Sibiryakov Ну так поищи другие определения этого макроса и посмотри при каких условиях они используются. Я в линуксе разбираться не хочу. Может нам mayton поможет? Зачем этот макрос? ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 17:02 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petravЯ в линуксе разбираться не хочу. Я где-то сказал "разбираться"? Я сказал просто найти "define" этого макроса и посмотреть на них. Я понимаю, это сложно... Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 17:57 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petrav Dimitry Sibiryakov Ну так поищи другие определения этого макроса и посмотри при каких условиях они используются. Я в линуксе разбираться не хочу. Может нам mayton поможет? Зачем этот макрос? Честно - не знаю. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 19:00 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Есть опции компилятора, которые считают не использованную переменную или параметр ошибкой. Что бы ошибки не происходило используют подобный макрос. Код предотвращает ошибку компиляции. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 19:52 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
[quot petrav#22274415] Сибирский Пушистый mayton, Это какой-то костыль, который что-то должен проверять. Например, то что у типа структуры "inode" есть поле данных "i_mutex". Иначе оно не будет компилироваться. А оно и без макроса не будет компилироваться. Я же с самого начала объяснил, что цикл там для того, чтобы можно было поставить ; после макроса, что в свою очередь нужно, чтобы читающие этот код не делали большие глаза от отсутствия ; и им бы казалось, что всё нормально, что это с++ а не ж с ушами. Единственное непонятно - зачем этот макрос вообще, когда он ничего не делает и ничего не добавлят функционально в код. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 20:39 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
blonduser Есть опции компилятора, которые считают не использованную переменную или параметр ошибкой. Что бы ошибки не происходило используют подобный макрос. Код предотвращает ошибку компиляции. Я видел их мейкфайл. Там не используются эти опции, и их код сыпет предупреждениями, как горохом. ... |
|||
:
Нравится:
Не нравится:
|
|||
04.02.2021, 20:41 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Антошка конечно не сахар, но в чем то он прав. Реальный смысл этого макроса во второй ветке дефайна CONFIG_LOCKDEP, а в этой - пустышка, аналог Код: plaintext 1. 2. 3.
Впрочем, он себе льстит, IQ 300 тут не нужно, хватит и 130+ =) ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 00:18 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Siemargl Антошка конечно не сахар, но в чем то он прав. Реальный смысл этого макроса во второй ветке дефайна CONFIG_LOCKDEP, а в этой - пустышка, аналог Код: plaintext 1. 2. 3.
Впрочем, он себе льстит, IQ 300 тут не нужно, хватит и 130+ =) Так может вы знаете зачем нужен пустой макрос в контексте блокировки мьютекса в драйвере файловой системы? Если я правильно понял, конечно. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 12:40 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
petrav, Так он непустой в отладочной версии ядра Код: plaintext 1. 2. 3.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 13:33 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Siemargl petrav, Так он непустой в отладочной версии ядра Код: plaintext 1. 2. 3.
надеюсь, что ковид достанет таких разрабов скорее раньше, чем позже. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 18:14 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Если тебе не нравится ядро Линкса - не пользуйся им. Posted via ActualForum NNTP Server 1.5 ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 18:59 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Некто Йоханес Берг закоммитил это в 2013 году. Можно попробовать почитать его пояснение по этому поводу. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38.
... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 19:47 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
Siemargl petrav, Так он непустой в отладочной версии ядра Код: plaintext 1. 2. 3.
Ну да, это же обычный assert() . Странно, что я не обратил внимание на название макроса. Нужно внимательнее читать и только потом писать. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 22:48 |
|
Что делает этот код?
|
|||
---|---|---|---|
#18+
mayton, Я так примерно понял, что Johannes Berg по ошибке подставил lockdep_assert_held() как аргумент функции. И в одной из конфигураций у него это компилировалось. А когда он добавил псевдо-цикл, то перестало компилироваться в обоих конфигурациях. Компилятор, очевидно, Си — это же ядро ОС. Короче, Си — зло, макросы — зло. Только C# , потому что он лучше Java. ... |
|||
:
Нравится:
Не нравится:
|
|||
05.02.2021, 23:10 |
|
|
start [/forum/topic.php?all=1&fid=57&tid=2017264]: |
0ms |
get settings: |
9ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
165ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
64ms |
get tp. blocked users: |
2ms |
others: | 12ms |
total: | 288ms |
0 / 0 |