Я просматривал исходный код библиотек Boost и заметил, что часто встречаются знаки с одним фунтом без каких-либо прикрепленных к ним директив препроцессора. Я прочитал руководство по препроцессору GCC и руководство по спецификации и ничего не могу найти по этому поводу.
(1) #ifndef BOOST_CONFIG_HPP
(2) # include <boost/config.hpp>
(3) #endif
(4) #
(5) #if defined(BOOST_HAS_PRAGMA_ONCE)
(6) # pragma once
(7) #endif
В строке 4 после знака фунта ничего нет. Какой эффект это имеет? Это определено в спецификации препроцессора C (CPP)?
Поскольку Boost является кроссплатформенной библиотекой, я бы предположил, что любой CPP должен правильно ее анализировать. Каков будет эффект / побочные эффекты наличия случайных знаков фунта / хеша по всему коду?