When I'm being paid for my time, and there isn't already a company standard, I use:
#ifndef path_to_file_h
#define path_to_file_h
The reason for the lowercase is that it's easier to copy and paste filenames and replace slashes with underscores. The reason for #ifndef is that it lines up nicely with #define, making it easier to see that the symbols are the same. I like the GUID idea, though, so I might try it out.
When I'm not being paid for my time, and not releasing my code into the wild, I just use #pragma once
. Unlike most other portability issues, it's just as easy to add include guards later as now, and it can be done by someone who knows nothing about the code base (e.g. me in a year's time, or some innocent programmer I send my code to), so YAGNI applies.