let print_global_declaration d =
    let print_storage_class = function
        Extern -> "extern" | ModuleStatic -> "static" | Inline -> "inline"
    in
    match d with
        CTTdeclFunction( c, t, i, is, s ) ->
          (print_storage_class c)^" "^(print_c_type t)^"\t"^i^"("^
          (print_list (fun x -> x) ", " is)^")\n"
          ^(print_stmt 0 s)^"\n"
      | CTTdeclVariable( c, t, s, i ) ->
          (print_storage_class c)^" "^(print_c_type t)^"\t"^s
          ^(match i with
              None -> ";\n"
            | Some i -> " = "^(print_ctt_initializer i)^";\n")