В настоящее время мы заняты переходом с Visual Studio 2005 на Visual Studio 2010 (с использованием неуправляемого C / C ++). Это означает, что около половины наших разработчиков уже используют Visual Studio 2010, а другая половина все еще использует Visual Studio 2005. Недавно я столкнулся с ситуацией, когда определенная конструкция может быть написана в чистом виде в Visual Studio 2010, но требует менее чистого исходного кода в Visual Studio 2005. Поскольку не все разработчики уже имеют Visual Studio 2010 на своем компьютере, я должен написать такой код:
#if _MSC_VER >= 1600
// clean version of the source code
#else
// less clean version
// of the source code
// requiring multiple lines of code
// and requiring some dirty static_casts
#endif
Поскольку все разработчики перейдут на Visual Studio 2010 к концу этого год, я хочу, чтобы этот код автоматически исчезал через определенный момент. Сохранение «менее чистой версии» в результате исходный код в долгосрочной перспективе приводит к нечитаемому исходному коду.
Конечно, я знаю, что код не исчезает автоматически, поэтому я на самом деле хочу, чтобы через определенный момент автоматически прозвучал сигнал тревоги. Примерно так:
#if _MSC_VER >= 1600
// clean version of the source code
#else
// less clean version
// of the source code
// requiring multiple lines of code
// and requiring some dirty static_casts
#endif
#if compilation_date is after 1 november 2010
# error "Remove Visual Studio 2005 compatibility code from this file"
#endif
Таким образом, если мы забудем об этом, нас автоматически уведомят об этом после 1 ноября 2010 года.
Этот трюк, вероятно, требует использования ДАТА , но так как для этого нужно быть обработанным прекомпилятором, вы не можете выполнять строковые манипуляции или использовать функции даты / времени C.
Я также рассмотрел альтернативную идею - просто отправить мне отложенное письмо, но мне было интересно, не было ли решение, которое может быть встроено в исходный код.
Почему бы просто не выполнять проверку во время выполнения в сборках для разработчиков? Конечно, вы тестируете свой код, поэтому, когда кто-то впервые протестирует его после указанной даты, вы получите уведомление.