C++ — Änderungen 6422 → 6424

Zeile 47: Zeile 47:
 
<cpp>
 
<cpp>
 
// Lizenz: public domain
 
// Lizenz: public domain
 +
 +
typedef void (*constructor)();
  
 
// Im Linkerskript definiert
 
// Im Linkerskript definiert
−
extern "C" void* start_ctors;
+
extern "C" constructor start_ctors;
−
extern "C" void* end_ctors;
+
extern "C" constructor end_ctors;
  
 
extern "C" void initializeConstructors();
 
extern "C" void initializeConstructors();
Zeile 57: Zeile 59:
 
void initialiseConstructors()
 
void initialiseConstructors()
 
{
 
{
−
   typedef void (*constructor)();
+
   for (constructor* i = &start_ctors;i != &end_ctors;++i)
−
 
+
     (*i)();
−
  constructor* iterator = reinterpret_cast<constructor*>(&start_ctors);
 
−
  constructor* last    = reinterpret_cast<constructor*>(&end_ctors);
 
−
 
 
−
  while (iterator != last)
 
−
     (*iterator++)();
 
 
}
 
}
 
</cpp>
 
</cpp>