Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Есть класс, в нем делаются вызовы функции Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. Надо часть вызовов заменить на DoCall2() типа такого: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. Хотел использовать вторую константу, но подумал, что можно эту же, но со значением. Константа определяется в строке компилятора. Как проверять значение в таком случае? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 10:42 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Положи макросы не снаружи а внутри docall. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 12:46 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинКонстанта определяется в строке компилятора. Как проверять значение в таком случае? Код: plaintext 1. Но вообще у вас неправильное использование условной компиляции. Надо ветки делать в одном месте в вызываемом коде, а не во множестве мест в вызывающем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 13:07 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинЕсть класс, в нем делаются вызовы функции Что, опять поделка студентов из Беркли?.. Код: sql 1. 2. 3. 4. 5. Posted via ActualForum NNTP Server 1.5 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 13:33 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyРолг ХупинКонстанта определяется в строке компилятора. Как проверять значение в таком случае? Код: plaintext 1. Но вообще у вас неправильное использование условной компиляции . Надо ветки делать в одном месте в вызываемом коде, а не во множестве мест в вызывающем. Like ! 5 копеек к лайку Вобще то, ИМХО, сие лучше решать через полиморфизм ( виртуальные функции классов) или шаблонны если типы параметров принципиально отличаются. DOCALL-ы обязательно где то отличаются, инфа сотка :) типами, количеством параметров....... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 14:55 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Dimitry SibiryakovРолг ХупинЕсть класс, в нем делаются вызовы функции Что, опять поделка студентов из Беркли?.. Код: sql 1. 2. 3. 4. 5. в общем - да, но это моё более глубокое погружение, глаза б мои их не видели (ц) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 15:42 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyРолг ХупинКонстанта определяется в строке компилятора. Как проверять значение в таком случае? Код: plaintext 1. Но вообще у вас неправильное использование условной компиляции. Надо ветки делать в одном месте в вызываемом коде, а не во множестве мест в вызывающем. теоретически - да, согласен, но наверное не всегда это верно: если сделать внутри функции, то она будет вызываться в любом случае, а это производительность. если, например, эта функция пишет данные в лог, и я не хочу, чтобы она писала на каких-то операциях, а на других писала - как тут внутрь всунуть? внутри код один и тот же и он не знает, откуда его вызвали, а вот вызовы стоят в разных местах, включая те, в которых я хочу ограничить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 15:47 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг Хупинесли сделать внутри функции, то она будет вызываться в любом случае, а это производительность. Зачем внутри? Сделайте снаружи, вокруг объявления функции (в ее хедер файле). Там выше Dimitry Sibiryakov привел пример как это делать. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 16:19 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyРолг Хупинесли сделать внутри функции, то она будет вызываться в любом случае, а это производительность. Зачем внутри? Сделайте снаружи, вокруг объявления функции (в ее хедер файле). Там выше Dimitry Sibiryakov привел пример как это делать. В этом *.c файле она не будет вызываться, т.е. вместо нее будет заглушка, а в других будет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 21:37 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинAnatoly Moskovskyпропущено... Код: plaintext 1. Но вообще у вас неправильное использование условной компиляции. Надо ветки делать в одном месте в вызываемом коде, а не во множестве мест в вызывающем. теоретически - да, согласен, но наверное не всегда это верно: если сделать внутри функции, то она будет вызываться в любом случае, а это производительность. если, например, эта функция пишет данные в лог, и я не хочу, чтобы она писала на каких-то операциях, а на других писала - как тут внутрь всунуть? внутри код один и тот же и он не знает, откуда его вызвали, а вот вызовы стоят в разных местах, включая те, в которых я хочу ограничить. Если тело функции будет пустое то хороший оптимизирующий компиллятор его выкинет и проблемы производительности не будет. Более того. Если речь идет о логгировании (а ты должен понимать что это I/O) то цена дисковой операции в 10-100-1000 крат превышает цену проверки условия. И даже если ты не будешь использовать макро-процессор а просто поставишь банальный if (level > currentLevel) то такой функционал будет лучше и гибче чем эти страшные многоэтажные препроцессинги которые ты безосновательно затолкал в код в надежде решить проблемы перформанса. Дружище - не там ищешь. Не там, родной. Забудь про препроцессор. Он для других дел создавался. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 22:22 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
maytonРолг Хупинпропущено... теоретически - да, согласен, но наверное не всегда это верно: если сделать внутри функции, то она будет вызываться в любом случае, а это производительность. если, например, эта функция пишет данные в лог, и я не хочу, чтобы она писала на каких-то операциях, а на других писала - как тут внутрь всунуть? внутри код один и тот же и он не знает, откуда его вызвали, а вот вызовы стоят в разных местах, включая те, в которых я хочу ограничить. Если тело функции будет пустое то хороший оптимизирующий компиллятор его выкинет и проблемы производительности не будет. Более того. Если речь идет о логгировании (а ты должен понимать что это I/O) то цена дисковой операции в 10-100-1000 крат превышает цену проверки условия. И даже если ты не будешь использовать макро-процессор а просто поставишь банальный if (level > currentLevel) то такой функционал будет лучше и гибче чем эти страшные многоэтажные препроцессинги которые ты безосновательно затолкал в код в надежде решить проблемы перформанса. Дружище - не там ищешь. Не там, родной. Забудь про препроцессор. Он для других дел создавался. Откуда возьмётся пустое тело функции? Если я определю дефайном в одном файле, то это определение сработает и для других? Мне надо вызывать в одном классе лог только если сильно надо, а в других - всегда. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 22:44 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг Хупин, Тогда тебе надо спрятать функцию DoCall() (например в real_DoCall ) и сделать макрос типа: Код: plaintext 1. 2. 3. 4. 5. Аналогично и для всех функций которые тебе надо включать или выключать из компиляции. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 22:59 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинВ этом *.c файле она не будет вызываться, т.е. вместо нее будет заглушка, а в других будет? Зачем заглушка. Можно вообще ничего не подставлять. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:01 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
White Owl Код: plaintext 1. 2. 3. 4. 5. #if внутри #define не работает. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:03 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг ХупинОткуда возьмётся пустое тело функции? Если я определю дефайном в одном файле, то это определение сработает и для других? Мне надо вызывать в одном классе лог только если сильно надо, а в других - всегда. Стоп-стоп. Вот с этого момента - какая-то каша. Под функцией я имел в виду твой метод DoCall(). Это первое. И второе. Ты спрашиваешь - "определю дефайном в одном файле, то это определение сработает и для других". Ты быстрее это проверишь сам. Дольше я буду уточнять где у тебя файл и где определение и какова область видимости. Но я даю почву для расмышлений. Только мне сложно рассуждать не видя твой исходник целиком. Надеюсь ты это понимашь и не будешь требовать от меня телепатии. Будь так любезен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:07 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Ролг Хупинmaytonпропущено... Если тело функции будет пустое то хороший оптимизирующий компиллятор его выкинет и проблемы производительности не будет. Более того. Если речь идет о логгировании (а ты должен понимать что это I/O) то цена дисковой операции в 10-100-1000 крат превышает цену проверки условия. И даже если ты не будешь использовать макро-процессор а просто поставишь банальный if (level > currentLevel) то такой функционал будет лучше и гибче чем эти страшные многоэтажные препроцессинги которые ты безосновательно затолкал в код в надежде решить проблемы перформанса. Дружище - не там ищешь. Не там, родной. Забудь про препроцессор. Он для других дел создавался. Откуда возьмётся пустое тело функции? Если я определю дефайном в одном файле, то это определение сработает и для других? Мне надо вызывать в одном классе лог только если сильно надо, а в других - всегда. 1 пишешь макрос TRACE(.....) в отдельной единице компляции . 2 Если переменная TRACE_ON. взведена , макос вставляет в код функцию трассировки. 3 Если не взведена макрос ничего не делает в коде не будет вызова функции трассировки. 4 инклюдишь файл с трассирочным макросом в свои исходники. 5 там дефайнишь TRACE_ON при необходимости 6 делаешь вызов TRACE(.....) хоть в каждой второй строке. 7 Профит . Приблизительно так ..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.03.2018, 23:59 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Привет док. По прежнему - инкогнито? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:16 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Зарегистрированным доступен "Просто трёп". Наверное, есть чего опасаться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:19 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
maytonПривет док. По прежнему - инкогнито? Та вроде все знают, что я Дохтар на ПСЖ :) передай там по случаю привет Софтвареру в ЗПТ. Деду и Тафи в ПТ :) И папке акузу в арею :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:22 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Я не хожу в ЗПТ. Принципиально. Я - завсегда с народом. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:23 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
maytonЯ не хожу в ЗПТ. Принципиально. Я - завсегда с народом. Я говрил по случаю, если вдруг .... Я хожу только оракл, программирование и сюда. И очень редко . ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 00:29 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
maytonПривет док. По прежнему - инкогнито? Смысла не вижу, меня через пару часов всревно забанят за хохлосрач :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 01:01 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Так ты надень второе лицо. Для С++. :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 01:04 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
maytonТак ты надень второе лицо. Для С++. :) Я свои колоритные трусы не меняю :) Я не удержушь что бы не забежать в ПТ и трольнуть русский мир интеллектуальной бандровщиной тряхнуть стариной :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 01:10 |
|
||
|
Как лучше сделать: #ifdef
|
|||
|---|---|---|---|
|
#18+
Anatoly MoskovskyРолг ХупинВ этом *.c файле она не будет вызываться, т.е. вместо нее будет заглушка, а в других будет? Зачем заглушка. Можно вообще ничего не подставлять. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. С user.c - ясно, переопределены и будут вызваны или не вызваны. Так будет во всех *.c функциях, включающих #include "fun.h" Что будет на месте этих функций в третьем файле user3.c, который не включает #include "fun.h"? Останутся как были? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 15.03.2018, 13:44 |
|
||
|
|

start [/forum/topic.php?fid=57&fpage=21&tid=2017935]: |
0ms |
get settings: |
8ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
44ms |
get topic data: |
13ms |
get forum data: |
3ms |
get page messages: |
62ms |
get tp. blocked users: |
2ms |
| others: | 12ms |
| total: | 164ms |

| 0 / 0 |
