Die _SFR_IOXX() wird man wohl kaum direkt in eine C-Datei schreiben. In der C-Datei steht eher so was:

PORTC = ***
unsigned char sreg = SREG;

Im Endeffekt wird zum Auflösen zwar irgendwo das _SFR_IOXX-Makro verwendet, aber solche Zuwesungen kann man in einem Pascal-Compiler wohl direkt hinschreiben. Bei GCC werden diese Makros gebraucht, weil ein SFR über seine Adresse angesprochen wird, und GCC nicht weiss, ob die Memory-Adresse gemeint ist, oder die io-Adresse (haben einen Offset von 0x20). Verwendet man also out, braucht man eine andere Adresse als mit sts, auch wenn das gleiche Register gemeint ist.