C preprocessor: точка перед токеном

Тема в разделе "LANGS.C", создана пользователем green, 3 ноя 2010.

  1. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    Обнаружил, что препроцессор (MSVC, GCC и Comeau) почему-то не раскрывает М в таком вот коде:
    Код (Text):
    1. #define M 1
    2. float f = 0.M;
    В Стандарте ничего подобного не нахожу...
     
  2. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    Точка же часть числа.
    Такое вот тоже работать не будет, например:
    Код (Text):
    1. #define M .1
    2. float f = 0M;
     
  3. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    n0name
    AFAIK, препроцессор оперирует только целыми числами.

    Код (Text):
    1. 0M
    просто не будет разбит на токены, согласно Стандарту.
     
  4. n0name

    n0name New Member

    Публикаций:
    0
    Регистрация:
    5 июн 2004
    Сообщения:
    4.336
    Адрес:
    Russia
    в кратце - pp-number это токен препроцессора.
    pp-number может быть в формате "число.".
     
  5. green

    green New Member

    Публикаций:
    0
    Регистрация:
    15 июл 2003
    Сообщения:
    1.217
    Адрес:
    Ukraine
    n0name
    Спасибо.
    Действительно, выходит, препроцессор распознаёт флоаты...
    Всегда думал, что нет, т.к. использовать в выражениях, вычисляемых препроцессором, можно только целые числа.