Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Здравствуйте, Заранее прошу прощения за "ламерскую" постановку вопроса. Надеюсь смогу объяснить суть проблемы. Пытаюсь программировать на VC++. Возник следующий вопрос: Имеем следующую конструкцию: Код: plaintext 1. 2. 3. 4. т.е. из одной функции вызываю другую функцию. Если я меняю схему следующим образом: Код: plaintext 1. 2. 3. 4. т.е. выхожу из функции func1 до вызова func2, то при компилировании код функции func2 не включается в конечную программу. Это видно по конечному размеру программы. Если ли же сделать следующим образом: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. то код func2 включается компилятором в конечную программу. Вопрос следующий: понятно, что при таком значении переменной val, программа всегда будет выходить из func1 до вызова функции func2. Возможно ли задать каким либо образом настройку компилятора, чтобы при такой однозначности он не включал код функции func2? Спасибо. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2013, 11:06 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2013, 11:57 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
m_Sla, +1, надо делать препроцессором. Параметры компиляции может и можно подобрать, но работать это будет только на данном конкретном компиляторе... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 05.12.2013, 14:17 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
max950 Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. А ты уверен что не хотел написать Код: plaintext 1. ? Я вот привыкши к VB с полпинка такую ошибку налепить могу. И совсем непонятно чему будет равно выражение в if так как ты это записал. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 05:51 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Дмитрий77И совсем непонятно чему будет равно выражение в if так как ты это записал. Компилятор такую конструкцию представит равнозначно следущему: Код: plaintext 1. 2. 3. 4. 5. 6. Т.е. присвоит переменной значение и проверит условие. Ошибка распространенная, поэтому хороший тон писать так: Код: plaintext 1. 2. 3. 4. В случае Код: plaintext 1. 2. 3. 4. будет ошибка компиляции ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 10:18 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
_Прохожий_Ошибка распространенная, поэтому хороший тон писать так: Код: plaintext 1. 2. 3. 4. зато читать это угробище совершенно невозможно, аж глаза болят. Хороший компилятор должен выдавать варнинг на if( val = 1 ), а хорошим тоном является устанавливать крыжик "считать предупреждения как ошибки" и максимальный уровень предупреждений. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 11:59 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Ошибка распространенная, поэтому хороший тон писать так: if (1 == val ) Это дебилизм, а не хороший стиль. Если у тебя не хватает, чтобы заставить свой мозг отличать присваивание от сравнения, то по-моему в программировании тебе делать нечего. И чем признаваться публично всем в этом, лучше уж один раз в жизни сделать таки ошибку и влепить присваивание вместо сравнения, зато на всю оставшуюся жизнь запомнишь и уже никогда такую ошибку не сделаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 12:29 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
MasterZivЭто дебилизм, а не хороший стиль. Данный "Condition format" рекомендован еще в "C Coding Standard" - "Always put the constant on the left hand side of an equality/inequality comparison." И данное правило вошло в стандарты не только С/С++. Можете называть авторов дибилами и меня причислять к их компании. Лично я сочту за честь с этими людьми рядом постоять. А что вас так собственно возбудило? Вот уж не думал, что это старое правило, старее чем наверное любой из присутствующих здесь, может кого-то удивить или быть новым, кроме только изучающих язык. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 13:42 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
_Прохожий_MasterZivЭто дебилизм, а не хороший стиль. Данный "Condition format" рекомендован еще в "C Coding Standard" - "Always put the constant on the left hand side of an equality/inequality comparison." И данное правило вошло в стандарты не только С/С++. Это ты путаешь coding conventions со стандартами. Стандарты незыблемы и обязательны к применению, конвеншены -- дело вкуса. Я кстати ни в одном из conventions компаний где я работал такого правила не видел. _Прохожий_Можете называть авторов дибилами и меня причислять к их компании. Лично я сочту за честь с этими людьми рядом постоять. А что вас так собственно возбудило? Вот уж не думал, что это старое правило, старее чем наверное любой из присутствующих здесь, может кого-то удивить или быть новым, кроме только изучающих язык. Да, назову. Когда я пишу Код: plaintext 1. 2. 3. 4. я VAL сравниваю с чем-то. Когда я читаю Код: plaintext 1. 2. 3. 4. я сразу думаю -- блин, PI -- константа, на кой хрен её с чем-то сравнивать ? это константа! К тому же это дурацкое правило работает только если у тебя один из операндов сравнения -- rvalue. Если lvalue оба -- всё, правило бесполезно. Так на кой ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 13:52 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
MasterZivТак на кой ? Защита от опечатки и лучшая читабельность кода, т.к. сразу видна константа с которой сравнивается выражение. В случае большой длины последнего, это действительно удобнее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 14:12 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
_Прохожий_MasterZivТак на кой ? Защита от опечатки и лучшая читабельность кода, т.к. сразу видна константа с которой сравнивается выражение. В случае большой длины последнего, это действительно удобнее. Я же говорю, БЕЗ константы смысл сразу же теряется. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 17:51 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
_Прохожий_Защита от опечатки и лучшая читабельность кода, т.к. сразу видна константа с которой сравнивается выражение. В случае большой длины последнего, это действительно удобнее. Так может не делать громадных условий, чтобы видеть код целиком? Вообще это один из самых дурацких пунктов в стилях кодирования, поскольку никакой 100%-й гарантии он не дает, при том что меняет естественный поток кода. А учитывая что написание кода составляет мизерную долю по сравнению с его чтением и эта разница растет со временем жизни проекта, то данное правило только ухудшает код. Не говоря уже о том, что я например не помню уже когда я в последний раз допускал такую опечатку, как = вместо ==. Несколько лет точно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 19:57 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Все-го то случайно зашел и указал человеку на очевидную ошибку-описку (чего из вас кстати никто не заметил). И какой резонанс.... MasterZivИ чем признаваться публично всем в этом, ...Надеюсь не в мой огород камень? Конечно если вы постоянно пишите на плюсах, вы таких ляпов делать не будете. А на VB этот код будет: Код: vbnet 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. И естественно если я месяцами сижу в VB и раз в полгода чего-то пишу-корректирую на C++, то я могу случайно и про == забыть, и про скобки, и про ; Ну, компилятор выдаст ошибку или предупреждение, я исправлю. А писать 1==val, ну как-то некрасиво на мой взгляд. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 06.12.2013, 23:35 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Дмитрий77, Про вас вообще не шла речь, все кроме одного с вами согласны. А этого одного закидаем шапками :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2013, 02:51 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Anatoly Moskovsky_Прохожий_Защита от опечатки и лучшая читабельность кода, т.к. сразу видна константа с которой сравнивается выражение. В случае большой длины последнего, это действительно удобнее. Так может не делать громадных условий, чтобы видеть код целиком? Вообще это один из самых дурацких пунктов в стилях кодирования, поскольку никакой 100%-й гарантии он не дает, при том что меняет естественный поток кода. А учитывая что написание кода составляет мизерную долю по сравнению с его чтением и эта разница растет со временем жизни проекта, то данное правило только ухудшает код. Не говоря уже о том, что я например не помню уже когда я в последний раз допускал такую опечатку, как = вместо ==. Несколько лет точно. Ребята, вы не представляете, на сколько я рад, что вижу здесь единомышленников. А то надоело маргиналом быть. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2013, 13:05 |
|
||
|
Настройки компилятора...
|
|||
|---|---|---|---|
|
#18+
Дмитрий77 А писать 1==val, ну как-то некрасиво на мой взгляд. Значит, не в твой огород камень. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 07.12.2013, 13:08 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=68&tid=2019832]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
64ms |
get topic data: |
12ms |
get forum data: |
2ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 13ms |
| total: | 167ms |

| 0 / 0 |
