Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Запустил чекер кода, пишет такое авторSummary: Converting pointer arithmetic result to bool. The bool is always true unless there is undefined behaviour. Message: Converting pointer arithmetic result to bool. The boolean result is always true unless there is pointer arithmetic overflow, and overflow is undefined behaviour. Probably a dereference is forgotten. на вызов этого макроса, что в нем криво? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 08:10 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Макросы -- зло. Возможно, второй аргумент макроса является выражением в месте использования макроса. Как вариант можно отпрепроцессить файл и уже потом натравить на него чекер. Либо самому развернуть макрос в одном месте. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 08:24 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
В данном случае чекер говорит Summary: Converting pointer arithmetic result to bool. The bool is always true unless there is undefined behaviour. что не стоит делать циклы основанные на бесконечности и неопределённом поведении выхода из цикла. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 09:39 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
maytonВ данном случае чекер говорит Summary: Converting pointer arithmetic result to bool. The bool is always true unless there is undefined behaviour. что не стоит делать циклы основанные на бесконечности и неопределённом поведении выхода из цикла. дану... где в макросецикл, основанный на бесконечности и с неопределенным критерием выхода? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 10:39 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
ИМХО заменить макрос на функцию и посмотреть на какую строку ругается. PS do ... while (0) можно вообще выкинуть, т.к. внутри break не используется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 10:44 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
256kmaytonВ данном случае чекер говорит пропущено... что не стоит делать циклы основанные на бесконечности и неопределённом поведении выхода из цикла. данунах... где в макросецикл, основанный на бесконечности и с неопределенным критерием выхода? Возможно чекер просто ругается на использование константы там где обычно стоит переменная. Сонар-куб к примеру классифицирует такое как dodgy code или tricky. Но господин Хупин вместо того чтобы спрашивать мог сделать еще 1 или 2 эксперимена с do while или без него и методом исключения просто ответить на свой вопрос. Тем более что чекер у него под рукой а у нас с вами нет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 11:25 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:13 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Dima TPS do ... while (0) можно вообще выкинуть, т.к. внутри break не используется. Нельзя. Ибо чревато боком при развёртывании в сложных выражениях. А break внутри и не нужен, поскольку данный цикл по определению одноразовый и используется тупо потому, что макрос сделан для С, не позволявшего сделать блок из кавычек. Не надо его путать с бесконечным while(true) {}. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:32 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovDima TPS do ... while (0) можно вообще выкинуть, т.к. внутри break не используется. Нельзя. Ибо чревато боком при развёртывании в сложных выражениях. Учту. Dimitry SibiryakovА break внутри и не нужен, поскольку данный цикл по определению одноразовый и используется тупо потому, что макрос сделан для С, не позволявшего сделать блок из кавычек. Не надо его путать с бесконечным while(true) {}. Я к тому что такой цикл + break можно использовать взамен goto, для выхода за цикл из любого места его тела. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:37 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинЗапустил чекер кода, пишет такое авторSummary: Converting pointer arithmetic result to bool. The bool is always true unless there is undefined behaviour. Message: Converting pointer arithmetic result to bool. The boolean result is always true unless there is pointer arithmetic overflow, and overflow is undefined behaviour. Probably a dereference is forgotten. на вызов этого макроса, что в нем криво? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Без контекста вызова не понять. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:43 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
NekZМакросы -- зло. Ну и да, почему бы это не оформить в виде функции ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:44 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Dima TЯ к тому что такой цикл + break можно использовать взамен goto, для выхода за цикл из любого места его тела. Полезный трюк, тоже его использую. Только здесь всем не тот случай. Здесь разжёвывается подробно для чего пишут do { ... } while(0) в макросах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:46 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
maytonВ данном случае чекер говорит Summary: Converting pointer arithmetic result to bool. The bool is always true unless there is undefined behaviour. что не стоит делать циклы основанные на бесконечности и неопределённом поведении выхода из цикла. Где там бесконечный -то цикл? Наоборот, цикл с гарантированно одним проходом.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:46 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Dima TИМХО заменить макрос на функцию и посмотреть на какую строку ругается. PS do ... while (0) можно вообще выкинуть, т.к. внутри break не используется. Этот мнимый цикл нужен только в макросе, да. Это чтобы всё воспринималось однозначно как один блок кода. Если то же делать через функцию, оно автоматом получится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:48 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
MasterZivNekZМакросы -- зло. Ну и да, почему бы это не оформить в виде функции ? Без понятия. Видимо Ролг Хупин совсем не умеет темплейты. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:50 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
MasterZivDima TИМХО заменить макрос на функцию и посмотреть на какую строку ругается. PS do ... while (0) можно вообще выкинуть, т.к. внутри break не используется.Этот мнимый цикл нужен только в макросе, да. Это чтобы всё воспринималось однозначно как один блок кода. Если то же делать через функцию, оно автоматом получится.С таким же успехом можно использовать просто {...} - без всяких do{...}while (false); Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:56 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
NekZВидимо Ролг Хупин совсем не умеет темплейты. Вероятнее всего это ещё один странный кусок, порождённый буйной фантазией юных экспериментаторов из Беркли. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 12:57 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
rdb_devMasterZivпропущено... Этот мнимый цикл нужен только в макросе, да. Это чтобы всё воспринималось однозначно как один блок кода. Если то же делать через функцию, оно автоматом получится.С таким же успехом можно использовать просто {...} - без всяких do{...}while (false); Код: plaintext 1. 2. 3. 4. 5. 6. Нельзя. ПОчитай выше ссылку с Quora, внимательно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 13:10 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovNekZВидимо Ролг Хупин совсем не умеет темплейты. Вероятнее всего это ещё один странный кусок, порождённый буйной фантазией юных экспериментаторов из Беркли. да, это тот же одбц драйвер для постгреса Только не надо называть их юными ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 15:29 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
MasterZivРолг ХупинЗапустил чекер кода, пишет такое пропущено... на вызов этого макроса, что в нем криво? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. Без контекста вызова не понять.Ну судя по сообщению - похоже, что во второй параметр передали некое выражение, например, указатель плюс целое. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:18 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Скорее всего чекер разворачивает макрос перед проверкой. Если в макрос передали STRN_TO_NAME(..., "str, ...) то он развернется в Код: plaintext 1. 2. 3. В данном случае "str" рассматривается как указатель char* в булевом контексте. А его значение известно при компиляции и не равно 0, поэтому в булевом контексте там всегда true. Вот про это и говорит это сообщение: Converting pointer arithmetic result to bool. The bool is always true. Резолюция - отключить этот вид проверок или выкинуть чекер если он этого не позволяет. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 16:51 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСкорее всего чекер разворачивает макрос перед проверкой. Если в макрос передали STRN_TO_NAME(..., "str, ...) то он развернется в Код: plaintext 1. 2. 3. В данном случае "str" рассматривается как указатель char* в булевом контексте. А его значение известно при компиляции и не равно 0, поэтому в булевом контексте там всегда true. Вот про это и говорит это сообщение: Converting pointer arithmetic result to bool. The bool is always true. Резолюция - отключить этот вид проверок или выкинуть чекер если он этого не позволяет. Кстати, какой чекер порекомендуете? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 17:06 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
256kКстати, какой чекер порекомендуете? Используем в проекте cppcheck. А порекомендовать не могу никакой )) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 17:26 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyСкорее всего чекер разворачивает макрос перед проверкой. Если в макрос передали STRN_TO_NAME(..., "str, ...) то он развернется в Код: plaintext 1. 2. 3. В данном случае "str" рассматривается как указатель char* в булевом контексте. А его значение известно при компиляции и не равно 0, поэтому в булевом контексте там всегда true. Вот про это и говорит это сообщение: Converting pointer arithmetic result to bool. The bool is always true. Резолюция - отключить этот вид проверок или выкинуть чекер если он этого не позволяет. Да блин, ещё раз повторю, что, скорее всего дело во втором параметре, который является выражением адресной арифметики. Например, Код: plaintext 1. 2. Развернётся в Код: plaintext 1. 2. 3. Именно это и не нравится чекеру Как вариант, Ролг Хупин мог бы попробовать зафигачить такую проверку в макросе Код: plaintext 1. 2. 3. 4. И проверить будет ли ругаться чекер. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 17:31 |
|
||
|
Где здесь пробой?
|
|||
|---|---|---|---|
|
#18+
BarloneMasterZivпропущено... Без контекста вызова не понять.Ну судя по сообщению - похоже, что во второй параметр передали некое выражение, например, указатель плюс целое. да, вызов Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.07.2018, 20:53 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=18&tid=2017819]: |
0ms |
get settings: |
8ms |
get forum list: |
11ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
103ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
72ms |
get tp. blocked users: |
2ms |
| others: | 9ms |
| total: | 231ms |

| 0 / 0 |
