Step 5 (S-40959)

From Stepik Wiki
Jump to: navigation, search

Step on Stepik: https://stepik.org/lesson/13377/step/5

Step 5 (S-40959) 1.png

[00:00 - 00:16] важно отметить разницу между фракциями imacros макросами себя 3 называют инструкции процессора мы с вами уже говорили про препроцессор вы знаете что это специально язык программирования строимся + + который работает


[00:16 - 00:31] со строками не более того вы знаете что это часть языка обрабатывается в самом начале компиляции то есть 1 этап компиляции отмечается в том что обрабатывается инструкции процессора оказывается что макросы можно использовать


[00:31 - 00:48] для определения некоторых подобие функции функции хотя растительности надо писать в кавычках давайте рассмотрим это например пусть есть обычная функция которая принимает 2 целочисленных аргумента


[00:48 - 01:03] икс и игрек и возвращает значение максима из них используют операторы если икс больше игрек то возвращается икс вращается


[01:03 - 01:20] можно воспользоваться директив для того чтобы определить макрос с 2 параметрами которые будут вести себя очень похоже на то как ведет себя наша функция например можно делать это просто скопировав


[01:20 - 01:38] соответствующее возвращаемое значение однако такого подхода есть достаточно серьезных проблем дело в том что процессор работает с параметрами икс игрек как со строками


Step 5 (S-40959) 2.png

[01:38 - 01:54] не заботятся о соблюдения синтаксиса + его соблюдении приоритет операторов в данном случае если мы воспользуемся макро функции макс 2 в следующем выражении


[01:54 - 02:13] то при раскрытии макроса подчеркнуто выражение лица в выражение написанных комментариев если теперь мы растаем здесь скобки соответствующие приоритет оператора то окажется что в данном случае


[02:13 - 02:30] сравниваются 2 выслали расстраивается 2 часа 1 то есть цель и да то есть условие которое проверяет она не соответствует тому соли которые мы ожидали что про смс ждали что будет проверяться


[02:30 - 02:49] больше а в действительности проверяется бы + то что то есть оказывается что в таком случае макро функция будет работать неправильно это происходит из за того что препроцессор ничего не знает про синтаксисе + работает с параметрами как со строками


[02:49 - 02:50] * Audio is not recognized *