Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: вопрос по оптимизации препроцессора  (Прочитано 9214 раз)
0 Пользователей и 1 Гость смотрят эту тему.
banana
Гость
« : 05-07-2004 06:39 » 

Если написать :
  #define HEADER_LENGTH 10
  #define PACKET_LENGTH 90
  #define TOTAL_LENGTH  (HEADER_LENGTH+PACKET_LENGTH)
то компилятор кодирует TOTAL_LENGTH как (10+90).
Не подскажет ли кто, как сделать чтобы TOTAL_LENGTH в итоговом коде воспринимался как 100 ?
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 05-07-2004 09:23 » new

banana, (10+90) будет восприниматься большинством компиляторов именно как 100, так как они будут делать оптимизацию арифметических выражений и вычислят эту сумму на этапе компиляции.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
banana
Гость
« Ответ #2 : 05-07-2004 12:49 » 

К сожалению, этого не делает Borland C 5.02, с которым я временно вынужден иметь дело.
Записан
npak
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 05-07-2004 13:07 » 

banana, воспользуйся не define а const int или enum
Они инициализируются ровно один раз.

препроцессор С делает текстовое преобразование, за семантику не отвечает.  Поэтому он, по стандарту, не должен распознавать и выполнять сложение или другие операции.

Если тебе надо что-то большее, то пользуйся другим препроцессором или другим языком программирования. Например, в Аде официальное требование к компилятору -- вычислять все выражения времени компиляции.
Записан

UniTesK -- индустриальная технология надежного тестирования.

http://www.unitesk.com/ru/
Алексей++
глобальный и пушистый
Глобальный модератор

ru
Offline Offline
Сообщений: 13


« Ответ #4 : 21-04-2006 17:16 » 

(комент)

ЧАВО
Записан

Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines