let expr_const mem = function
    | CInt64(k,ik,_) ->        M.V_int(Ctypes.c_int ik,F.e_icst (Int64.to_string k))
    | CChr c         -> M.V_int(Ctypes.c_char(),
                                F.e_icst (string_of_int (Char.code c)))
    | CReal(f,fk,_)  ->        M.V_float(Ctypes.c_float fk, F.e_float f)
    | CEnum e        ->        !expr_rec mem e.eival
    | CWStr _        ->
        WpLog.not_yet_implemented "wide character string constant"
    | CStr s         ->
        WpLog.not_yet_implemented "character string constant (%S)" s