C++ — Änderungen 6420 → 6422

Zeile 49: Zeile 49:
  
 
// Im Linkerskript definiert
 
// Im Linkerskript definiert
−
extern "C" uintptr_t start_ctors;
+
extern "C" void* start_ctors;
−
extern "C" uintptr_t end_ctors;
+
extern "C" void* end_ctors;
  
 
extern "C" void initializeConstructors();
 
extern "C" void initializeConstructors();
Zeile 57: Zeile 57:
 
void initialiseConstructors()
 
void initialiseConstructors()
 
{
 
{
−
   uintptr_t *iterator = reinterpret_cast<uintptr_t*>(&start_ctors);
+
   typedef void (*constructor)();
−
   while (iterator < reinterpret_cast<uintptr_t*>(&end_ctors))
+
 
−
   {
+
  constructor* iterator = reinterpret_cast<constructor*>(&start_ctors);
−
    void (*fp)(void) = reinterpret_cast<void (*)(void)>(*iterator);
+
   constructor* last    = reinterpret_cast<constructor*>(&end_ctors);
−
    fp();
+
 
−
    iterator++;
+
   while (iterator != last)
−
  }
+
    (*iterator++)();
 
}
 
}
 
</cpp>
 
</cpp>