Возможно ли иметь исходный код, который «истекает» (становится недействительным после определенного момента)?

В настоящее время мы заняты переходом с 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.

Я также рассмотрел альтернативную идею - просто отправить мне отложенное письмо, но мне было интересно, не было ли решение, которое может быть встроено в исходный код.

9
задан JeremyP 1 September 2010 в 16:16
поделиться

1 ответ

Почему бы просто не выполнять проверку во время выполнения в сборках для разработчиков? Конечно, вы тестируете свой код, поэтому, когда кто-то впервые протестирует его после указанной даты, вы получите уведомление.

1
ответ дан 4 December 2019 в 08:49
поделиться