Просто в качестве примера. У нас есть класс шаблона потока, который использует класс реализации 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

но это не включает файл.

В чем проблема? Как я могу избавиться от этого?

Ответы на вопрос(3)

Ваш ответ на вопрос