Стандарт C ++ просто имеет следующее:
__LINE__
: Предполагаемый номер строки (в текущем исходном файле) текущей строки источника (целочисленная константа).
На самом деле тип не указывает тип, поэтому он, скорее всего, будет того же типа, что и неукрашенное целое число в вашем исходном коде, которое будет int
.Тот факт, что верхний предел разрешенного диапазона равен 2G - 1
, подтверждает это (хотя нижний диапазон равен 1
).
Тот факт, что #line
допускает только цифры (без конечного U
досделать его без знака), также можно прочитать, чтобы поддержать это.
Но это только поддержка . Я не смог найти однозначного утверждения ни в стандартах C ++, ни в языке C.Просто имеет смысл * a , что он будет преобразован во что-то вроде 42
, когда он пройдет фазу предварительной обработки, и это то, что компилятор увидит, обработав его в точности как 42
(int
)).
* a : Впрочем, это не первый раз, когда мой здравый смысл ошибался: -)