Решение заключалось в том, что для препроцессора необходимо использовать макрос заранее, чтобы он его вычислил, а уже затем использовать это вычисленное значение в дальнейших расчетах. Для этого делается еще один промежуточный макрос, который вызывает первый макрос. А макрос, которому нужен результат работы первого макроса, вызывает этот промежуточный макрос.