Das mit PORTB sollte funktionieren.

Aus (zB)

PORTB |= _BV(3); // PORT B.3 setzen

sollte so was oder ähnliches entstehen entstehen, nachdem der Präprozessor drübergerauscht ist:

(*(volatile uint8_t *)((0x1 + 0x20)) |= (1 << (3));

Falls nicht, stimmt was mit deiner Umgebung oder den includes nicht.
Verbutlich wird das PORTB erst gar nicht aufgelöst.
avr-gcc sollte das #include <io.h> anmeckern, stattdessen:
#include <avr/io.h>

Johann