Это не должно быть возможно, поскольку при включении языковых расширений Visual Studio использует другой алгоритм для компиляции кода, что происходит после расширения препроцессора. Другими словами, невозможно скомпилировать половину файла с расширениями, а другую без.
Позвольте мне проиллюстрировать пример с использованием расширения Variable-Length Argument Lists
. Что если функция определена следующим образом в одном из ваших заголовочных файлов:
void myfunc( int x, ... );
void myfunc( int x, char * c )
{ }
Позже в исходном файле вы звоните
char * c = new char;
myfunc(5, c);
В соответствии с ANSI C объявление в заголовочных файлах вообще не имеет смысла, поэтому следует вызывать myfunc с "...", а в соответствии с MSVS следует использовать вторую функцию.