Все компиляторы должны требовать, чтобы вы включили эти строки. Если они этого не делают, то они просто побуждают вас писать непереносимый код, потому что вы полагаетесь на то, что определенные заголовки включаются автоматически, и вы полагаетесь на то, что определенные имена не входят в область действия.
Я не хочу сказать, что эти две строки всегда должны быть обязательными. Я имею в виду только то, что, если остальная часть вашего кода написана для использования вещей, объявленных в заголовке cstdlib и в пространстве имен std
, то эти две строки нуждаются в , чтобы появиться первым, компилятор не должен действовать так, как если бы он был там, когда его на самом деле нет.
Проверьте, есть ли у вашего другого компилятора некоторые настройки для отключения этого неявного кода. Если это не так, то это, вероятно, очень и очень старый компилятор, и вам следует подумать о том, чтобы не использовать его и больше не поддерживать.