При переходе с C++ на чистый C приходится смотреть в оба.
В частности, если ты сделал typedef enum, создал функцию с параметром такого типа, а потом при её вызове подставил переменную типа int, тоотряд не заметит потери бойца gcc -Wall проглотит это молчком, потому что первое - фактически int, а второе - int явный, чего тут разбираться-то? :)))
Если что, задача была отсекать на уровне компилятора использование в параметрах функций значений от другого enum-а.
В частности, если ты сделал typedef enum, создал функцию с параметром такого типа, а потом при её вызове подставил переменную типа int, то
Если что, задача была отсекать на уровне компилятора использование в параметрах функций значений от другого enum-а.
no subject
Date: 2024-10-31 10:32 am (UTC)gcc gcc lupus est. У нас сейчас актуальные версии gcc от 4.7.2 до 14.2.0, так там у каждой версии свои погремушки. В 14.2.0 точно что-то ужесточилось, и то что на всем остальном в худшем случае давало warning, компилироваться перестало. Может быть переход на 14.2.0 спасет смертельно раненного кота.
Не говоря уж о том, что кроме -Wall есть еще -Wextra (хотя там по-моему ничего про enum-ы дополнительного не включают)
no subject
Date: 2024-10-31 10:42 am (UTC)У меня gcc 9.4.0, -Wextra не помогает. И -strict, И -std=XX тоже все перепробовал :)
Проблема некритичная, но как-то привык к строгому контролю типов.
no subject
Date: 2024-10-31 11:51 am (UTC)Портабельный ассемблер он такой ассемблер.
Хотя, конечно где-то после 10-й — 11-й версий изменилось очень много и продолжнает меняться.
no subject
Date: 2024-10-31 04:50 pm (UTC)Вопреки названию, -Wall это точно не все предупреждения о конвертации типов, по крайней мере в последних версиях gcc.
no subject
Date: 2024-10-31 06:40 pm (UTC)-Wextra тоже не помогает.