I'm looking through the code of a simple USB driver, and I've come across a line that I don't really understand:
struct UsbDevice
{
...
void (*DeviceDetached)(struct UsbDevice *device) __attribute__((aligned(4)));
...
};
What exactly is happening here? This use of the parentheses (to...assign a new name to *device?) and this use of "void" are both new to me. (And the self-referencing struct is also odd.)