Интересный подход. Это не проблема иметь их как #define
s в предварительно скомпилированном заголовке - это делает их доступными везде, и, как говорит jtbandes, они в любом случае вызываются только при использовании, поэтому никаких проблем с памятью нет.
Мне стилистически кажется немного глупым, что вы по сути создаете глобальные "волшебные" зарезервированные слова, которые выглядят так, как будто они могут быть именами локальных переменных. Если другие читают ваш код, они не особенно говорят сами за себя. Если бы я это сделал, я бы, по крайней мере, начал их с заглавной буквы или сделал их заглавными, чтобы указать, что они являются определением / макросом.
Также немного странно вставлять так много заголовков приложений в предварительно скомпилированный заголовок (который обычно довольно скудный и используется для основной системы), но фактическое влияние на время компиляции здесь на современных машинах будет совершенно незначительным.
Ваши заявления о том, почему вы создаете синглтоны, и предупреждения памяти, заставляют меня думать, что вы все еще можете изучать программирование. Синглтоны - прекрасный способ в объектно-ориентированном мире инкапсулировать объект, который должен существовать только один раз. Если вы используете их как способ избежать «написания одного и того же кода снова и снова», любая обычная функция или метод, где вам это нужно, также будет работать. Что касается «помощников», вы также должны посмотреть на «категории», которые могут помочь вам в этом. Re: 8 разных синглетонов. Миллионы объектов сосуществуют в одно и то же время, пока ваше приложение работает, в одиночном режиме и так далее. Это само по себе не проблема - они не беспокоят друг друга, если все они управляются правильно.