compile with Wall & Wextra