Просто в качестве примера. У нас есть класс шаблона потока, который использует класс реализации thread_impl. thread_impl реализован как для windows, так и для unix, поэтому есть заголовочные файлы thread_impl_win и thread_impl_nix. Заголовочный файл потока должен включать один из них, чтобы можно было использовать класс thread_impl.
аюсь сгенерировать имя включаемого файла в макросе. Это должно быть законно в C ++:
#define INCLUDE_FILE "module_impl_win.hpp"
#include INCLUDE_FILE
это работает нормально, но как только я пытаюсь сгенерировать имя файла, он не может скомпилировать
#define INCLUDE_FILE(M) M##"_impl_win.hpp"
#include INCLUDE_FILE("module")
На самом деле это дает мне предупреждение на MSVC2010
предупреждение C4067: неожиданные токены после директивы препроцессора - ожидается newlin
но это не включает файл.
В чем проблема? Как я могу избавиться от этого?