dzz

Люди гибнут за металл, я от этого устал...

Oct 31, 2024 12:37

При переходе с C++ на чистый C приходится смотреть в оба.

В частности, если ты сделал typedef enum, создал функцию с параметром такого типа, а потом при её вызове подставил переменную типа int, то отряд не заметит потери бойца gcc -Wall проглотит это молчком, потому что первое - фактически int, а второе - int явный, чего тут разбираться-то ( Read more... )

programming, work

Leave a comment

Comments 5

vitus_wagner October 31 2024, 10:32:52 UTC

gcc gcc lupus est. У нас сейчас актуальные версии gcc от 4.7.2 до 14.2.0, так там у каждой версии свои погремушки. В 14.2.0 точно что-то ужесточилось, и то что на всем остальном в худшем случае давало warning, компилироваться перестало. Может быть переход на 14.2.0 спасет смертельно раненного кота.

Не говоря уж о том, что кроме -Wall есть еще -Wextra (хотя там по-моему ничего про enum-ы дополнительного не включают)

Reply

dzz October 31 2024, 10:42:20 UTC

У меня gcc 9.4.0, -Wextra не помогает. И -strict, И -std=XX тоже все перепробовал :)

Проблема некритичная, но как-то привык к строгому контролю типов.

Reply

vitus_wagner October 31 2024, 11:51:38 UTC

Портабельный ассемблер он такой ассемблер.

Хотя, конечно где-то после 10-й - 11-й версий изменилось очень много и продолжнает меняться.

Reply


a_konst October 31 2024, 16:50:41 UTC

Вопреки названию, -Wall это точно не все предупреждения о конвертации типов, по крайней мере в последних версиях gcc.

Reply

dzz October 31 2024, 18:40:09 UTC

-Wextra тоже не помогает.

Reply


Leave a comment

Up