[Это не совсем ответ, но слишком сложный для комментария.]
Если у вас есть код, который делает такие вещи, как
#include <stdio.h>
FILE *ifp = stdin;
int main() { ... }
и если ваша проблема заключается в ошибках, указывающих, что stdin
не является константой времени компиляции, подходящей для статического инициализатора, я думаю, вам придется переписать этот аспект вашего кода. Я могу ошибаться, но если я правильно помню, мысль о том, что stdin
et al. если константы времени компиляции никогда не были гарантией, просто полезным свойством самых ранних реализаций Unix. Это не обязательно относится ко всем старым реализациям, поэтому «изменение» в Стандарте, в котором явно сказано, что они не обязательно являются постоянными, не было изменением само по себе , а скорее более или менее кодификацией расхождения существующей практики.
(Другими словами, если у вас есть компилятор, который отклоняет код, и даже если у него есть режим обратной совместимости, я был бы удивлен, если бы режим обратной совместимости превратил stdin
в компиляцию постоянная времени.)