Использование конкатенации препроцессора C для получения числа в экспоненциальной записи

Почему код:

#define EXPONENT(num, exp) num ## e ## exp
EXPONENT(1,1)
EXPONENT(1,-1)
EXPONENT(1,+1)

после предварительной обработки изменяется на:

1e1
1e- 1
1e+ 1

а не в

1e1
1e-1
1e+1

? Я подозреваю, что это может быть связано с тем, что -1,+1 анализируются как два токена (? ). Однако как в таком случае получить последний результат?

8
задан Brian Tompsett - 汤莱恩 17 April 2016 в 12:27
поделиться