Step 6 (S-40964)

From Stepik Wiki
Jump to: navigation, search

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

Step 6 (S-40964) 1.png

[00:00 - 00:14] чтобы избежать потенциальных проблем с президентом операторов которые могут возникнуть при использовании макросы можно используя следующие приемы каждый параметр макроса будем оборачивать в круглые скобки


[00:14 - 00:31] таким образом если в качестве параметра макросов передадут некоторые выражения то она будет защищено от проблем при этом более того сам макрос тоже обернется однако такой подход


Step 6 (S-40964) 2.png

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


[00:51 - 01:05] макрос для того чтобы получить максимальное значение из значение а увеличенный единицу и соответственно ожидаемое поведение наши функции


Step 6 (S-40964) 3.png

[01:05 - 01:22] написанный громче макросов такой что результатом данного выражения будет ц равны однако если мы посмотрим как данная функция


[01:22 - 01:40] будет развернута препроцессором то мы заметим что в нашем поражении будут выполняться дважды сначала он выполнится в тот момент когда мы будем проверять условия


[01:40 - 01:57] и а станет равным и после этого он будет выполнен непосредственно в самом разрешением значит соответственно не станешь diamond 2 мы получим равной 3


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


Step 6 (S-40964) 4.png

[02:15 - 02:35] например если у вас есть некоторый код который вы хотите выполнять только для проверки то есть в случае отладочного выполнения вашего приложения то можно его компилировать по условию если где то будет определена


Step 6 (S-40964) 5.png

[02:35 - 02:54] константа то тогда этот ком например с дополнительной проверкой скомпилировать если не будет объявлено то код проигнорируете и он не будет вставлен в


Step 6 (S-40964) 6.png

Step 6 (S-40964) 7.png

[02:54 - 02:59] точка com c + + который отдаст непосредственно