11.1Sjoerg#include <unistd.h> 21.1Sjoerg 31.2Sjoerg#ifdef CHECK_STACK_ALIGNMENT 41.2Sjoerg#include <stdlib.h> 51.2Sjoerg 61.2Sjoergextern "C" int check_stack_alignment(void); 71.2Sjoerg#endif 81.2Sjoerg 91.1Sjoergclass Test { 101.1Sjoergpublic: 111.1Sjoerg Test() 121.1Sjoerg { 131.1Sjoerg static const char msg[] = "constructor executed\n"; 141.1Sjoerg write(STDOUT_FILENO, msg, sizeof(msg) - 1); 151.2Sjoerg#ifdef CHECK_STACK_ALIGNMENT 161.2Sjoerg if (!check_stack_alignment()) { 171.2Sjoerg static const char msg2[] = "stack unaligned \n"; 181.2Sjoerg write(STDOUT_FILENO, msg2, sizeof(msg2) - 1); 191.2Sjoerg exit(1); 201.2Sjoerg } 211.2Sjoerg#endif 221.1Sjoerg } 231.1Sjoerg ~Test() 241.1Sjoerg { 251.1Sjoerg static const char msg[] = "destructor executed\n"; 261.1Sjoerg write(STDOUT_FILENO, msg, sizeof(msg) - 1); 271.2Sjoerg#ifdef CHECK_STACK_ALIGNMENT 281.2Sjoerg if (!check_stack_alignment()) { 291.2Sjoerg static const char msg2[] = "stack unaligned \n"; 301.2Sjoerg write(STDOUT_FILENO, msg2, sizeof(msg2) - 1); 311.2Sjoerg exit(1); 321.2Sjoerg } 331.2Sjoerg#endif 341.1Sjoerg } 351.1Sjoerg}; 361.1Sjoerg 371.1SjoergTest test; 38