реклама на сайте
подробности

 
 
> Вычисление констант, Возможности компилятора.
SasaVitebsk
сообщение Oct 2 2006, 09:11
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Мне необходимо, для универсальности воспользоваться формулой для вычисления константы. В описании языка Си я не нашёл некоторых моментов. Например мне надо операция возведения в степень. То есть чтобы компилятор высчитал и подставил численное выражение. Ну например.

#define NUMBRZR 8 // Число отображаемых разрядов
#define DECIMAL 10 // Тип счёта
.....
j=powl(DECIMAL,NUMBRZR)-1; // Инициализировать значения
.....

Иными словами я хочу получить "99999999" в операторе присваивания. И функция здесь конечно не причём. Это выражение вычисляется на этапе компиляции.

Как написать возведение в степень?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
IgorKossak
сообщение Oct 3 2006, 09:48
Сообщение #2


Шаман
******

Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221



В теме имелось в виду не то, кто чем и как занимается (компилятор или препроцессор), а как вычислить константу при помощи сложной формулы, содержащей функции, на С.
Так вот ответ - никак. Ибо вместо желаемой подстановки константного значения будет вызываться функция. В плане вычисления констант компилятор С достаточно беден. Это не FORTH, где такие вычисления возможны.
Варианты обходных манёвров здесь уже приводились.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Oct 3 2006, 10:18
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(IgorKossak @ Oct 3 2006, 12:48) *
В теме имелось в виду не то, кто чем и как занимается (компилятор или препроцессор), а как вычислить константу при помощи сложной формулы, содержащей функции, на С.
Так вот ответ - никак. Ибо вместо желаемой подстановки константного значения будет вызываться функция. В плане вычисления констант компилятор С достаточно беден. Это не FORTH, где такие вычисления возможны.
Варианты обходных манёвров здесь уже приводились.


Тем не менее спасибо всем. Мне было очень интересно узнать данные подробности. Это даёт некоторое понимание происходящего. Я уже понял что препроцессор просто подставляет (понятно из ошибок). Но мне кажется (хотя вопрос и риторический) что не правильно вставлять формулу в код программы, если её значение можно сразу вычислить на этапе компиляции. О какой после этого оптимизации можно говорить. По-моему где то читал, что всётаки какие-то из компиляторов так и поступают. А может мне приснилось. smile.gif
Ну чтож, раз мы не можем повлиять на процесс, то надо принять его как должное. smile.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 13:29
Рейтинг@Mail.ru


Страница сгенерированна за 0.01378 секунд с 7
ELECTRONIX ©2004-2016