http://users.livejournal.com/_winnie/433617.html?view=5691601
Если коротко: gcc для #pragma once использует не путь к файлу, а его атрибуты (размер и время) и содержимое.
Это он так борется с проблемой алиасов.
| Undefined! Undefined! |
| // a.h
#pragma once
x++;
// b.h
#pragma once
x++;
// main.cc
int main()
{
int x = 0;
#include "a.h"
#include "b.h"
return x;
}
Если a.h и b.h имеют одинаковое время, то x=1, иначе x=2. |
| |
Более подробно — см. жж winnie.