Если переменная flagA находится в локальной области (и остается неизменной в этой области), то эти два будут скомпилированы, чтобы быть точно такими же (для большинства компиляторов, в не отладочной сборке) . Однако, если flagA является глобальным, вам нужно объявить его как 'constexpr' (что, вероятно, хорошая идея в другом случае!) .
Доказательство: https://godbolt.org/z/r9nra5
С точки зрения передового опыта, я уверен, что каждый скинется со своими предпочтениями, но я предпочитаю версию 1. Единственный вариант причина в том, что сразу становится ясно, что код в блоке #ifdef / #endif условно компилируется. Это может быть не сразу заметно при рассмотрении случая 2.