// Copyright (c) 1993-1999 Microsoft Corporation /**************************************************************************** ZZZ - error in all cases AZZ - no error when : app_config AZM - no error when : app_config + ms_ext ACZ - no error when : app_config + c_ext ACM - no error when : app_config + c_ext + ms_ext ZCZ - no error when : c_ext ZCM - no error when : c_ext + ms_ext ZZM - no error when : ms_ext Therefore: The following are the configurations -ms_ext on: ZZM | ZCM | ACM | AZM ---------- -c_ext on: ZCM | ZCZ | ACM | ACZ ---------- -ms_ext or -c_ext on: ZZM | ZCM | ACM | AZM | ZCZ | ACZ -------------------- -app_config on : AZZ | AZM | ACZ | ACM ---------------- ****************************************************************************/ #include "errors.hxx" #define ERR_ALWAYS ( ZZZ ) #define MS_EXT_SET ( ZZM | ZCM | ACM | AZM ) #define C_EXT_SET ( ZCM | ZCZ | ACM | ACZ ) #define MS_OR_C_EXT_SET ( MS_EXT_SET | C_EXT_SET ) #define APP_CONFIG_SET ( AZZ | AZM | ACZ | ACM ) typedef struct errdb { unsigned int inApplicableEnviron; #ifdef RPCDEBUG unsigned short TestValue; #endif // RPCDEBUG E_MASK ErrMask; const char * pError; } ERRDB; const ERRDB ErrorDataBase[] = { { 0, CHECK_ERR( NO_INPUT_FILE) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"missing source-file name" } ,{ 0, CHECK_ERR( INPUT_OPEN) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"cannot open input file" } ,{ 0, CHECK_ERR( INPUT_READ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"error while reading input file" } ,{ 0, CHECK_ERR( PREPROCESSOR_ERROR) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"error returned by the C preprocessor" } ,{ 0, CHECK_ERR( PREPROCESSOR_EXEC) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"cannot execute C preprocessor" } ,{ 0, CHECK_ERR( NO_PREPROCESSOR) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"cannot find C preprocessor" } ,{ 0, CHECK_ERR( PREPROCESSOR_INVALID ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"invalid C preprocessor executable" } ,{ 0, CHECK_ERR( SWITCH_REDEFINED) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 ) ,"switch specified more than once on command line :" } ,{ 0, CHECK_ERR( UNKNOWN_SWITCH) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, NOWARN ) ,"unknown switch" } ,{ 0, CHECK_ERR( UNKNOWN_ARGUMENT) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 ) ,"unknown argument ignored" } ,{ 0, CHECK_ERR( UNIMPLEMENTED_SWITCH) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 ) ,"switch not implemented" } ,{ 0, CHECK_ERR( MISSING_ARG) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"argument(s) missing for switch" } ,{ 0, CHECK_ERR( ILLEGAL_ARGUMENT) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"argument illegal for switch /" } ,{ 0, CHECK_ERR( BAD_SWITCH_SYNTAX) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"illegal syntax for switch" } ,{ 0, CHECK_ERR( NO_CPP_OVERRIDES) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 ) ,"/no_cpp overrides /cpp_cmd and /cpp_opt" } ,{ 0, CHECK_ERR( NO_WARN_OVERRIDES) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 ) ,"/W0 or /no_warn overrides warning-level switch" } ,{ 0, CHECK_ERR( INTERMEDIATE_FILE_CREATE) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"cannot create intermediate file" } ,{ 0, CHECK_ERR( UNUSED_ERROR_CODE1 ) // was SERVER_AUX_FILE_NOT_SPECIFIED MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"Unused error message" } ,{ 0, CHECK_ERR( OUT_OF_SYSTEM_FILE_HANDLES) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"out of system file handles" } ,{ 0, CHECK_ERR( UNUSED_ERROR_CODE2 ) // was BOTH_CSWTCH_SSWTCH MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"Unused error message" } ,{ 0, CHECK_ERR( CANNOT_OPEN_RESP_FILE) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"cannot open response file" } ,{ 0, CHECK_ERR( ILLEGAL_CHAR_IN_RESP_FILE) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"illegal character(s) found in response file" } ,{ 0, CHECK_ERR( MISMATCHED_PREFIX_PAIR) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"mismatch in argument pair for switch" } ,{ 0, CHECK_ERR( NESTED_RESP_FILE) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"nested invocation of response files is illegal" } ,{ 0, CHECK_ERR( ABSTRACT_DECL ) MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"must specify /c_ext for abstract declarators" } ,{ 0, CHECK_ERR( ACTUAL_DECLARATION ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"instantiation of data is illegal; you must use \"extern\" or \"static\"" } ,{ 0, CHECK_ERR( C_STACK_OVERFLOW) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"compiler stack overflow" } ,{ 0, CHECK_ERR( DUPLICATE_DEFINITION) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"redefinition" } ,{ 0, CHECK_ERR( NO_HANDLE_DEFINED_FOR_PROC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) ,"[auto_handle] binding will be used" } ,{ 0, CHECK_ERR( OUT_OF_MEMORY) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"out of memory" } ,{ 0, CHECK_ERR( RECURSIVE_DEF) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"recursive definition" } ,{ 0, CHECK_ERR( REDUNDANT_IMPORT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) ,"import ignored; file already imported :" } ,{ 0, CHECK_ERR( SPARSE_ENUM ) MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"sparse enums require /c_ext or /ms_ext" } ,{ 0, CHECK_ERR( UNDEFINED_SYMBOL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"undefined symbol" } ,{ 0, CHECK_ERR( UNDEFINED_TYPE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"type used in ACF file not defined in IDL file" } ,{ 0, CHECK_ERR( UNRESOLVED_TYPE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"unresolved type declaration" } ,{ 0, CHECK_ERR( WCHAR_CONSTANT_NOT_OSF ) MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"use of wide-character constants requires /ms_ext or /c_ext" } ,{ 0, CHECK_ERR( WCHAR_STRING_NOT_OSF ) MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"use of wide character strings requires /ms_ext or /c_ext" } ,{ 0, CHECK_ERR( WCHAR_T_ILLEGAL) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"inconsistent redefinition of type wchar_t" } ,{ 0, CHECK_ERR( TYPELIB_NOT_LOADED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"failed to load tlb in importlib:" } ,{ 0, CHECK_ERR( TWO_LIBRARIES ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"two library blocks" } ,{ 0, CHECK_ERR( NO_IDISPATCH ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"the dispinterface statement requires a definition for IDispatch" } ,{ 0, CHECK_ERR( ERR_TYPELIB ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error accessing type library" } ,{ 0, CHECK_ERR( ERR_TYPEINFO ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error accessing type info" } ,{ 0, CHECK_ERR( ERR_TYPELIB_GENERATION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error generating type library" } ,{ 0, CHECK_ERR( DUPLICATE_IID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"duplicate id" } ,{ 0, CHECK_ERR( BAD_ENTRY_VALUE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal or missing value for entry attribute" } ,{ 0, CHECK_ERR( ASSUMING_CHAR) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 5 ) ,"error recovery assumes" } ,{ 0, CHECK_ERR( DISCARDING_CHAR) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 5 ) ,"error recovery discards" } ,{ 0, CHECK_ERR( BENIGN_SYNTAX_ERROR) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"syntax error" } ,{ 0, CHECK_ERR( SYNTAX_ERROR) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"cannot recover from earlier syntax errors; aborting compilation" } ,{ 0, CHECK_ERR( UNKNOWN_PRAGMA_OPTION) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"unknown pragma option" } ,{ 0, CHECK_ERR( UNIMPLEMENTED_FEATURE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"feature not implemented" } ,{ 0, CHECK_ERR( UNIMPLEMENTED_TYPE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"type not implemented" } ,{ 0, CHECK_ERR( EXPR_DEREF_ON_NON_POINTER) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"non-pointer used in a dereference operation" } ,{ 0, CHECK_ERR( EXPR_DIV_BY_ZERO) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"expression has a divide by zero" } ,{ 0, CHECK_ERR( EXPR_INCOMPATIBLE_TYPES) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"expression uses incompatible types" } ,{ 0, CHECK_ERR( EXPR_INDEXING_NON_ARRAY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"non-array expression uses index operator" } ,{ 0, CHECK_ERR( EXPR_LHS_NON_COMPOSITE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"left-hand side of expression does not evaluate to struct/union/enum" } ,{ 0, CHECK_ERR( EXPR_NOT_CONSTANT) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"constant expression expected" } ,{ 0, CHECK_ERR( EXPR_NOT_EVALUATABLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"expression cannot be evaluated at compile time" } ,{ 0, CHECK_ERR( EXPR_NOT_IMPLEMENTED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"expression not implemented" } ,{ 0, CHECK_ERR( NO_PTR_DEFAULT_ON_INTERFACE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"no [pointer_default] attribute specified, assuming [unique] for all unattributed pointers" } ,{ ENV_WIN64, CHECK_ERR( NOT_OLEAUTOMATION_INTERFACE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 ) ,"interface is not automation marshaling conformant, requires Windows NT 4.0 SP4 or greater" } ,{ 0, CHECK_ERR( DERIVES_FROM_PTR_TO_CONF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[out] only parameter cannot be a pointer to an open structure" } ,{ 0, CHECK_ERR( DERIVES_FROM_UNSIZED_STRING ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[out] only parameter cannot be an unsized string" } ,{ 0, CHECK_ERR( NON_PTR_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[out] parameter is not a pointer" } ,{ 0, CHECK_ERR( OPEN_STRUCT_AS_PARAM) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"open structure cannot be a parameter" } ,{ 0, CHECK_ERR( OUT_CONTEXT_GENERIC_HANDLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[out] context handle/generic handle must be specified as a pointer to that handle type" } ,{ 0, CHECK_ERR( CTXT_HDL_TRANSMIT_AS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"context handle must not derive from a type that has the [transmit_as] attribute" } ,{ 0, CHECK_ERR( PARAM_IS_ELIPSIS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"cannot specify a variable number of arguments to a remote procedure" } ,{ 0, CHECK_ERR( VOID_PARAM_WITH_NAME) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"named parameter cannot be \"void\"" } ,{ 0, CHECK_ERR( DERIVES_FROM_COCLASS_OR_MODULE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter derives from \"module\"" } ,{ 0, CHECK_ERR( HANDLE_NOT_FIRST ) MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"only the first parameter can be a binding handle; you must specify the /ms_ext switch" } ,{ 0, CHECK_ERR( PROC_PARAM_COMM_STATUS) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"cannot use [comm_status] on both a parameter and a return type" } ,{ 0, CHECK_ERR( LOCAL_ATTR_ON_PROC) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"[local] attribute on a procedure requires /ms_ext" } ,{ 0, CHECK_ERR( ILLEGAL_USE_OF_PROPERTY_ATTRIBUTE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"property attributes may only be used with procedures" } ,{ 0, CHECK_ERR( MULTIPLE_PROPERTY_ATTRIBUTES ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"a procedure may not have more than one property attribute" } ,{ 0, CHECK_ERR( ILLEGAL_COMBINATION_OF_ATTRIBUTES ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"the procedure has an illegal combination of operation attributes" } ,{ 0, CHECK_ERR( CONFORMANT_ARRAY_NOT_LAST) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"field deriving from a conformant array must be the last member of the structure" } ,{ 0, CHECK_ERR( DUPLICATE_CASE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"duplicate [case] label" } ,{ 0, CHECK_ERR( NO_UNION_DEFAULT) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"no [default] case specified for discriminated union" } ,{ 0, CHECK_ERR( ATTRIBUTE_ID_UNRESOLVED) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"attribute expression cannot be resolved" } ,{ 0, CHECK_ERR( ATTR_MUST_BE_INT) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"attribute expression must be of integral type; no support for 64b expressions" } ,{ 0, CHECK_ERR( BYTE_COUNT_INVALID) MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"[byte_count] requires /ms_ext" } ,{ 0, CHECK_ERR( BYTE_COUNT_NOT_OUT_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[byte_count] can be applied only to out parameters of pointer type" } ,{ 0, CHECK_ERR( BYTE_COUNT_ON_CONF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[byte_count] cannot be specified on a pointer to a conformant array or structure" } ,{ 0, CHECK_ERR( BYTE_COUNT_PARAM_NOT_IN ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter specifying the byte count is not [in] only or byte count parameter is not [out] only" } ,{ 0, CHECK_ERR( BYTE_COUNT_PARAM_NOT_INTEGRAL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter specifying the byte count is not an integral type" } ,{ 0, CHECK_ERR( BYTE_COUNT_WITH_SIZE_ATTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"[byte_count] cannot be specified on a parameter with size attributes" } ,{ 0, CHECK_ERR( CASE_EXPR_NOT_CONST) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[case] expression is not constant" } ,{ 0, CHECK_ERR( CASE_EXPR_NOT_INT) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[case] expression is not of integral type" } ,{ 0, CHECK_ERR( CONTEXT_HANDLE_VOID_PTR ) MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"specifying [context_handle] on a type other than void * requires /ms_ext" } ,{ 0, CHECK_ERR( ERROR_STATUS_T_REPEATED) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"cannot specify more than one parameter with each of comm_status/fault_status" } ,{ 0, CHECK_ERR( E_STAT_T_MUST_BE_PTR_TO_E ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"comm_status/fault_status parameter must be an [out] only pointer parameter" } ,{ 0, CHECK_ERR( ENDPOINT_SYNTAX) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"endpoint syntax error" } ,{ 0, CHECK_ERR( INAPPLICABLE_ATTRIBUTE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"inapplicable attribute" } ,{ 0, CHECK_ERR( ALLOCATE_INVALID) MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"[allocate] requires /ms_ext" } ,{ 0, CHECK_ERR( INVALID_ALLOCATE_MODE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid [allocate] mode" } ,{ 0, CHECK_ERR( INVALID_SIZE_ATTR_ON_STRING) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"length attributes cannot be applied with string attribute" } ,{ 0, CHECK_ERR( LAST_AND_LENGTH) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[last_is] and [length_is] cannot be specified at the same time" } ,{ 0, CHECK_ERR( MAX_AND_SIZE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[max_is] and [size_is] cannot be specified at the same time" } ,{ 0, CHECK_ERR( NO_SWITCH_IS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"no [switch_is] attribute specified at use of union" } ,{ 0, CHECK_ERR( NO_UUID_SPECIFIED) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"no [uuid] specified" } ,{ 0, CHECK_ERR( UUID_LOCAL_BOTH_SPECIFIED) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) ,"[uuid] ignored on [local] interface" } ,{ 0, CHECK_ERR( SIZE_LENGTH_TYPE_MISMATCH ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"type mismatch between length and size attribute expressions" } ,{ 0, CHECK_ERR( STRING_NOT_ON_BYTE_CHAR) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[string] attribute must be specified \"byte\" \"char\" or \"wchar_t\" array or pointer" } ,{ 0, CHECK_ERR( SWITCH_TYPE_MISMATCH ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"mismatch between the type of the [switch_is] expression and the switch type of the union" } ,{ 0, CHECK_ERR( TRANSMIT_AS_CTXT_HANDLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[transmit_as] must not be applied to a type that derives from a context handle" } ,{ 0, CHECK_ERR( TRANSMIT_AS_NON_RPCABLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[transmit_as] must specify a transmissible type" } ,{ 0, CHECK_ERR( TRANSMIT_AS_POINTER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"transmitted type for [transmit_as] and [reprsent_as] must not be a pointer or derive from a pointer" } ,{ 0, CHECK_ERR( TRANSMIT_TYPE_CONF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"presented type for [transmit_as] and [represent_as] must not derive from a conformant/varying array or a conformant/varying structure" } ,{ 0, CHECK_ERR( UUID_FORMAT) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[uuid] format is incorrect" } ,{ 0, CHECK_ERR( UUID_NOT_HEX) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"uuid is not a hex number" } ,{ 0, CHECK_ERR( OPTIONAL_PARAMS_MUST_BE_LAST) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"optional parameters must come after required parameters" } ,{ 0, CHECK_ERR( DLLNAME_REQUIRED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[dllname] required when [entry] is used:" } ,{ 0, CHECK_ERR( INVALID_USE_OF_BINDABLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[bindable] is invalid without [propget], [propput], or [propputref]" } ,{ 0, CHECK_ERR( INVALID_USE_OF_PROPPUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"procedures with [propput] or [propputref] must have at least one parameter" } ,{ 0, CHECK_ERR( DISPATCH_ID_REQUIRED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[id] attribute is required" } ,{ 0, CHECK_ERR( ACF_INTERFACE_MISMATCH) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"interface name specified in the ACF file does not match that specified in the IDL file" } ,{ 0, CHECK_ERR( DUPLICATE_ATTR) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"duplicated attribute" } ,{ 0, CHECK_ERR( INVALID_COMM_STATUS_PARAM ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter with [comm_status] or [fault_status] attribute must be a pointer to type error_status_t" } ,{ 0, CHECK_ERR( LOCAL_PROC_IN_ACF) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"a [local] procedure cannot be specified in ACF file" } ,{ 0, CHECK_ERR( TYPE_HAS_NO_HANDLE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"specified type is not defined as a handle" } ,{ 0, CHECK_ERR( UNDEFINED_PROC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"procedure undefined" } ,{ 0, CHECK_ERR( UNDEF_PARAM_IN_IDL) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"this parameter does not exist in the IDL file" } ,{ 0, CHECK_ERR( ARRAY_BOUNDS_CONSTRUCT_BAD ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"this array bounds construct is not supported" } ,{ 0, CHECK_ERR( ILLEGAL_ARRAY_BOUNDS) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"array bound specification is illegal" } ,{ 0, CHECK_ERR( ILLEGAL_CONFORMANT_ARRAY) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"pointer to a conformant array or an array that contains a conformant array is not supported" } ,{ 0, CHECK_ERR( UNSIZED_ARRAY) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"pointee / array does not derive any size" } ,{ 0, CHECK_ERR( NOT_FIXED_ARRAY) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"only fixed arrays and SAFEARRAYs are legal in a type library" } ,{ 0, CHECK_ERR( SAFEARRAY_USE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"SAFEARRAYs are only legal inside a library block" } ,{ 0, CHECK_ERR( CHAR_CONST_NOT_TERMINATED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"badly formed character constant" } ,{ 0, CHECK_ERR( EOF_IN_COMMENT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"end of file found in comment" } ,{ 0, CHECK_ERR( EOF_IN_STRING ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"end of file found in string" } ,{ 0, CHECK_ERR( ID_TRUNCATED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 ) ,"identifier length exceeds 31 characters" } ,{ 0, CHECK_ERR( NEWLINE_IN_STRING ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"end of line found in string" } ,{ 0, CHECK_ERR( STRING_TOO_LONG ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"string constant exceeds limit of 255 characters" } ,{ 0, CHECK_ERR( IDENTIFIER_TOO_LONG ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"identifier exceeds limit of 255 characters and has been truncated" } ,{ 0, CHECK_ERR( CONSTANT_TOO_BIG ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"constant too big" } ,{ 0, CHECK_ERR( ERROR_PARSING_NUMERICAL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"numerical parsing error" } ,{ 0, CHECK_ERR( ERROR_OPENING_FILE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error in opening file" } ,{ 0, CHECK_ERR( ERR_BIND ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error binding to function" } ,{ 0, CHECK_ERR( ERR_INIT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error initializing OLE" } ,{ 0, CHECK_ERR( ERR_LOAD ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error loading library" } ,{ 0, CHECK_ERR( UNIQUE_FULL_PTR_OUT_ONLY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[out] only parameter must not derive from a top-level [unique] or [ptr] pointer/array" } ,{ 0, CHECK_ERR( BAD_ATTR_NON_RPC_UNION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"attribute is not applicable to this non-rpcable union" } ,{ 0, CHECK_ERR( SIZE_SPECIFIER_CANT_BE_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"expression used for a size attribute must not derive from an [out] only parameter" } ,{ 0, CHECK_ERR( LENGTH_SPECIFIER_CANT_BE_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"expression used for a length attribute for an [in] parameter cannot derive from an [out] only parameter" } ,{ 0, CHECK_ERR( BAD_CON_INT ) MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"use of \"int\" needs /c_ext" } ,{ 0, CHECK_ERR( BAD_CON_FIELD_VOID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"struct/union field must not be \"void\"" } ,{ 0, CHECK_ERR( BAD_CON_ARRAY_VOID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"array element must not be \"void\"" } ,{ 0, CHECK_ERR( BAD_CON_MSC_CDECL ) MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"use of type qualifiers and/or modifiers needs /c_ext" } ,{ 0, CHECK_ERR( BAD_CON_FIELD_FUNC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"struct/union field must not derive from a function" } ,{ 0, CHECK_ERR( BAD_CON_ARRAY_FUNC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"array element must not be a function" } ,{ 0, CHECK_ERR( BAD_CON_PARAM_FUNC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter must not be a function" } ,{ 0, CHECK_ERR( BAD_CON_BIT_FIELDS ) MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"struct/union with bit fields needs /c_ext" } ,{ 0, CHECK_ERR( BAD_CON_BIT_FIELD_NON_ANSI) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 ) ,"bit field specification on a type other that \"int\" is a non-ANSI-compatible extension" } ,{ 0, CHECK_ERR( BAD_CON_BIT_FIELD_NOT_INTEGRAL) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"bit field specification can be applied only to simple, integral types" } ,{ 0, CHECK_ERR( BAD_CON_CTXT_HDL_FIELD ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"struct/union field must not derive from handle_t or a context_handle" } ,{ 0, CHECK_ERR( BAD_CON_CTXT_HDL_ARRAY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"array element must not derive from handle_t or a context-handle" } ,{ 0, CHECK_ERR( BAD_CON_NON_RPC_UNION ) MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"this specification of union needs /c_ext" } ,{ ENV_WIN64, CHECK_ERR( NON_RPC_PARAM_INT ) MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter deriving from an \"int\" must have size specifier \"small\", \"short\", or \"long\" with the \"int\"" } ,{ 0, CHECK_ERR( NON_RPC_PARAM_VOID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"type of the parameter cannot derive from void or void *" } ,{ 0, CHECK_ERR( NON_RPC_PARAM_BIT_FIELDS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter deriving from a struct/union containing bit fields is not supported" } ,{ 0, CHECK_ERR( NON_RPC_PARAM_CDECL ) MAKE_E_MASK( C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"use of a parameter deriving from a type containing type-modifiers/type-qualifiers needs /c_ext" } ,{ 0, CHECK_ERR( NON_RPC_PARAM_FUNC_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter must not derive from a pointer to a function" } ,{ 0, CHECK_ERR( NON_RPC_UNION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter must not derive from a non-rpcable union" } ,{ 0, CHECK_ERR( NON_RPC_RTYPE_INT ) MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"return type derives from an \"int\". You must use size specifiers with the \"int\"" } ,{ 0, CHECK_ERR( NON_RPC_RTYPE_VOID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"return type must not derive from a void pointer" } ,{ 0, CHECK_ERR( NON_RPC_RTYPE_BIT_FIELDS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"return type must not derive from a struct/union containing bit-fields" } ,{ 0, CHECK_ERR( NON_RPC_RTYPE_UNION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"return type must not derive from a non-rpcable union" } ,{ 0, CHECK_ERR( NON_RPC_RTYPE_FUNC_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"return type must not derive from a pointer to a function" } ,{ 0, CHECK_ERR( COMPOUND_INITS_NOT_SUPPORTED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"compound initializers are not supported" } ,{ 0, CHECK_ERR( ACF_IN_IDL_NEEDS_APP_CONFIG ) MAKE_E_MASK( APP_CONFIG_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"ACF attributes in the IDL file need the /app_config switch" } ,{ 0, CHECK_ERR( SINGLE_LINE_COMMENT ) MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_WARN, 1 ) ,"single line comment needs /ms_ext or /c_ext" } ,{ 0, CHECK_ERR( VERSION_FORMAT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[version] format is incorrect" } ,{ 0, CHECK_ERR( SIGNED_ILLEGAL ) MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"\"signed\" needs /ms_ext or /c_ext" } ,{ 0, CHECK_ERR( ASSIGNMENT_TYPE_MISMATCH ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"mismatch in assignment type" } ,{ 0, CHECK_ERR( ILLEGAL_OSF_MODE_DECL ) MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"declaration must be of the form: const = " } ,{ 0, CHECK_ERR( OSF_DECL_NEEDS_CONST ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"declaration must have \"const\"" } ,{ 0, CHECK_ERR( COMP_DEF_IN_PARAM_LIST ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"struct/union/enum must not be defined in a parameter type specification" } ,{ 0, CHECK_ERR( ALLOCATE_NOT_ON_PTR_TYPE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[allocate] attribute must be applied only on non-void pointer types" } ,{ 0, CHECK_ERR( ARRAY_OF_UNIONS_ILLEGAL ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"array or equivalent pointer construct cannot derive from a non-encapsulated union" } ,{ 0, CHECK_ERR( BAD_CON_E_STAT_T_FIELD ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field must not derive from an error_status_t type" } ,{ 0, CHECK_ERR( CASE_LABELS_MISSING_IN_UNION ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"union has at least one arm without a case label" } ,{ 0, CHECK_ERR( BAD_CON_PARAM_RT_IGNORE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"parameter or return type must not derive from a type that has [ignore] applied to it" } ,{ 0, CHECK_ERR( MORE_THAN_ONE_PTR_ATTR ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"pointer already has a pointer-attribute applied to it" } ,{ 0, CHECK_ERR( RECURSION_THRU_REF ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field/parameter must not derive from a structure that is recursive through a ref pointer" } ,{ 0, CHECK_ERR( BAD_CON_FIELD_VOID_PTR ) MAKE_E_MASK( C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"use of field deriving from a void pointer needs /c_ext" } ,{ 0, CHECK_ERR( INVALID_OSF_ATTRIBUTE ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"use of this attribute needs /ms_ext" } ,{ ENV_WIN64, CHECK_ERR( INVALID_NEWTLB_ATTRIBUTE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"this attribute only allowed with new format type libraries" } ,{ 0, CHECK_ERR( WCHAR_T_INVALID_OSF ) MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"use of wchar_t needs /ms_ext or /c_ext" } ,{ 0, CHECK_ERR( BAD_CON_UNNAMED_FIELD ) MAKE_E_MASK( MS_OR_C_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"unnamed fields need /ms_ext or /c_ext" } ,{ 0, CHECK_ERR( BAD_CON_UNNAMED_FIELD_NO_STRUCT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"unnamed fields can derive only from struct/union types" } ,{ 0, CHECK_ERR( BAD_CON_UNION_FIELD_CONF ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field of a union cannot derive from a conformant/varying array or its pointer equivalent" } ,{ 0, CHECK_ERR( PTR_WITH_NO_DEFAULT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"no [pointer_default] attribute specified, assuming [ptr] for all unattributed pointers in interface" } ,{ 0, CHECK_ERR( RHS_OF_ASSIGN_NOT_CONST ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"initializing expression must resolve to a constant expression" } ,{ 0, CHECK_ERR( SWITCH_IS_TYPE_IS_WRONG ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"attribute expression must be of type integer, char, boolean or enum" } ,{ 0, CHECK_ERR( ILLEGAL_CONSTANT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"illegal constant" } ,{ 0, CHECK_ERR( IGNORE_UNIMPLEMENTED_ATTRIBUTE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"attribute not implemented; ignored" } ,{ 0, CHECK_ERR( BAD_CON_REF_RT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"return type must not derive from a [ref] pointer" } ,{ 0, CHECK_ERR( ATTRIBUTE_ID_MUST_BE_VAR ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"attribute expression must be a variable name or a pointer dereference expression in this mode. You must specify the /ms_ext switch" } ,{ 0, CHECK_ERR( RECURSIVE_UNION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter must not derive from a recursive non-encapsulated union" } ,{ 0, CHECK_ERR( BINDING_HANDLE_IS_OUT_ONLY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"binding-handle parameter cannot be [out] only" } ,{ 0, CHECK_ERR( PTR_TO_HDL_UNIQUE_OR_FULL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"pointer to a handle cannot be [unique] or [ptr]" } ,{ 0, CHECK_ERR( HANDLE_T_NO_TRANSMIT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter that is not a binding handle must not derive from handle_t" } ,{ 0, CHECK_ERR( UNEXPECTED_END_OF_FILE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"unexpected end of file found" } ,{ 0, CHECK_ERR( HANDLE_T_XMIT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"type deriving from handle_t must not have [transmit_as] applied to it" } ,{ 0, CHECK_ERR( CTXT_HDL_GENERIC_HDL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[context_handle] must not be applied to a type that has [handle] applied to it" } ,{ 0, CHECK_ERR( GENERIC_HDL_VOID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[handle] must not be specified on a type deriving from void or void *" } ,{ 0, CHECK_ERR( NO_EXPLICIT_IN_OUT_ON_PARAM ) MAKE_E_MASK( MS_OR_C_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter must have either [in], [out] or [in,out] in this mode. You must specify /ms_ext or /c_ext" } ,{ 0, CHECK_ERR( TRANSMIT_AS_VOID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"transmitted type may not derive from \"void\" for [transmit_as], [represent_as], [wire_marshal], [user_marshal]." } ,{ 0, CHECK_ERR( VOID_NON_FIRST_PARAM ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"\"void\" must be specified on the first and only parameter specification" } ,{ 0, CHECK_ERR( SWITCH_IS_ON_NON_UNION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[switch_is] must be specified only on a type deriving from a non-encapsulated union" } ,{ 0, CHECK_ERR( STRINGABLE_STRUCT_NOT_SUPPORTED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"stringable structures are not implemented in this version" } ,{ 0, CHECK_ERR( SWITCH_TYPE_TYPE_BAD ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"switch type can only be integral, char, boolean or enum" } ,{ 0, CHECK_ERR( GENERIC_HDL_HANDLE_T ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[handle] must not be specified on a type deriving from handle_t" } ,{ 0, CHECK_ERR( HANDLE_T_CANNOT_BE_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter deriving from handle_t must not be an [out] parameter" } ,{ 0, CHECK_ERR( SIZE_LENGTH_SW_UNIQUE_OR_FULL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) ,"attribute expression derives from [unique] or [ptr] pointer dereference" } ,{ 0, CHECK_ERR( CPP_QUOTE_NOT_OSF ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"\"cpp_quote\" requires /ms_ext" } ,{ 0, CHECK_ERR( QUOTED_UUID_NOT_OSF ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"quoted uuid requires /ms_ext" } ,{ 0, CHECK_ERR( RETURN_OF_UNIONS_ILLEGAL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"return type cannot derive from a non-encapsulated union" } ,{ 0, CHECK_ERR( RETURN_OF_CONF_STRUCT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"return type cannot derive from a conformant structure" } ,{ 0, CHECK_ERR( XMIT_AS_GENERIC_HANDLE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[transmit_as] must not be applied to a type deriving from a generic handle" } ,{ 0, CHECK_ERR( GENERIC_HANDLE_XMIT_AS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[handle] must not be applied to a type that has [transmit_as] applied to it" } ,{ 0, CHECK_ERR( INVALID_CONST_TYPE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"type specified for the const declaration is invalid" } ,{ 0, CHECK_ERR( INVALID_SIZEOF_OPERAND ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"operand to the sizeof operator is not supported" } ,{ 0, CHECK_ERR( NAME_ALREADY_USED ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"this name already used as a const identifier name" } ,{ 0, CHECK_ERR( ERROR_STATUS_T_ILLEGAL ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"inconsistent redefinition of type error_status_t" } ,{ 0, CHECK_ERR( CASE_VALUE_OUT_OF_RANGE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"[case] value out of range of switch type" } ,{ 0, CHECK_ERR( WCHAR_T_NEEDS_MS_EXT_TO_RPC ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"parameter deriving from wchar_t needs /ms_ext" } ,{ 0, CHECK_ERR( INTERFACE_ONLY_CALLBACKS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"this interface has only callbacks" } ,{ 0, CHECK_ERR( REDUNDANT_ATTRIBUTE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"redundantly specified attribute; ignored" } ,{ 0, CHECK_ERR( CTXT_HANDLE_USED_AS_IMPLICIT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"context handle type used for an implicit handle" } ,{ 0, CHECK_ERR( CONFLICTING_ALLOCATE_OPTIONS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"conflicting options specified for [allocate]" } ,{ 0, CHECK_ERR( ERROR_WRITING_FILE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"error while writing to file" } ,{ 0, CHECK_ERR( NO_SWITCH_TYPE_AT_DEF ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"no switch type found at definition of union, using the [switch_is] type" } ,{ 0, CHECK_ERR( ERRORS_PASS1_NO_PASS2 ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"semantic check incomplete due to previous errors" } ,{ 0, CHECK_ERR( HANDLES_WITH_CALLBACK ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"handle parameter or return type is not supported on a [callback] procedure" } ,{ 0, CHECK_ERR( PTR_NOT_FULLY_IMPLEMENTED ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"[ptr] does not support aliasing in this version" } ,{ 0, CHECK_ERR( PARAM_ALREADY_CTXT_HDL ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"parameter already defined as a context handle" } ,{ 0, CHECK_ERR( CTXT_HDL_HANDLE_T ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[context_handle] must not derive from handle_t" } ,{ 0, CHECK_ERR( ARRAY_SIZE_EXCEEDS_64K ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"array size exceeds 65536 bytes" } ,{ 0, CHECK_ERR( STRUCT_SIZE_EXCEEDS_64K ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"struct size exceeds 65536 bytes" } ,{ 0, CHECK_ERR( NE_UNION_FIELD_NE_UNION ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field of a non-encapsulated union cannot be another non-encapsulated union" } ,{ 0, CHECK_ERR( PTR_ATTRS_ON_EMBEDDED_ARRAY ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"pointer attribute(s) applied on an embedded array; ignored" } ,{ 0, CHECK_ERR( ALLOCATE_ON_TRANSMIT_AS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[allocate] is illegal on either the transmitted or presented type for [transmit_as], [represent_as], [wire_marshal], or [user_marshal]." } ,{ 0, CHECK_ERR( SWITCH_TYPE_REQD_THIS_IMP_MODE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[switch_type] must be specified in this import mode" } ,{ 0, CHECK_ERR( IMPLICIT_HDL_ASSUMED_GENERIC ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"[implicit_handle] type undefined; assuming generic handle" } ,{ 0, CHECK_ERR( E_STAT_T_ARRAY_ELEMENT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"array element must not derive from error_status_t" } ,{ 0, CHECK_ERR( ALLOCATE_ON_HANDLE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[allocate] illegal on a type deriving from a primitive/generic/context handle" } ,{ 0, CHECK_ERR( TRANSMIT_AS_ON_E_STAT_T ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"transmitted or presented type must not derive from error_status_t" } ,{ 0, CHECK_ERR( IGNORE_ON_DISCRIMINANT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"discriminant of a union must not derive from a field with [ignore] applied to it" } ,{ 0, CHECK_ERR( NOCODE_WITH_SERVER_STUBS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 ) ,"[nocode] ignored for server side since \"/server none\" not specified" } ,{ 0, CHECK_ERR( NO_REMOTE_PROCS_NO_STUBS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"no remote procedures specified in non-[local] interface; no client/server stubs will be generated" } ,{ 0, CHECK_ERR( TWO_DEFAULT_CASES ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"too many default cases specified for encapsulated union" } ,{ 0, CHECK_ERR( TWO_DEFAULT_INTERFACES ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"too many default interfaces specified for coclass" } ,{ 0, CHECK_ERR( DEFAULTVTABLE_REQUIRES_SOURCE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"items with [defaultvtable] must also have [source]" } ,{ 0, CHECK_ERR( UNION_NO_FIELDS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"union specification with no fields is illegal" } ,{ 0, CHECK_ERR( VALUE_OUT_OF_RANGE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"value out of range" } ,{ 0, CHECK_ERR( CTXT_HDL_NON_PTR ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[context_handle] must be applied on a pointer type" } ,{ 0, CHECK_ERR( NON_RPC_RTYPE_HANDLE_T ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"return type must not derive from handle_t" } ,{ 0, CHECK_ERR( GEN_HDL_CTXT_HDL ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[handle] must not be applied to a type deriving from a context handle" } ,{ ENV_WIN64, CHECK_ERR( NON_RPC_FIELD_INT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field deriving from an \"int\" must have size specifier \"small\", \"short\", or \"long\" with the \"int\"" } ,{ 0, CHECK_ERR( NON_RPC_FIELD_PTR_TO_VOID ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field must not derive from a void or void *" } ,{ 0, CHECK_ERR( NON_RPC_FIELD_BIT_FIELDS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field must not derive from a struct containing bit-fields" } ,{ 0, CHECK_ERR( NON_RPC_FIELD_NON_RPC_UNION ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field must not derive from a non-rpcable union" } ,{ 0, CHECK_ERR( NON_RPC_FIELD_FUNC_PTR ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"field must not derive from a pointer to a function" } ,{ 0, CHECK_ERR( PROC_PARAM_FAULT_STATUS) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"cannot use [fault_status] on both a parameter and a return type" } ,{ 0, CHECK_ERR( NON_OI_BIG_RETURN ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"return type too complicated for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( NON_OI_BIG_GEN_HDL ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"generic handle type too large for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( ALLOCATE_IN_OUT_PTR ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 ) ,"[allocate(all_nodes)] on an [in,out] parameter may orphan the original memory" } ,{ 0, CHECK_ERR( REF_PTR_IN_UNION) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"cannot have a [ref] pointer as a union arm" } ,{ 0, CHECK_ERR( NON_OI_CTXT_HDL ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"return of context handles not supported for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( NON_OI_ERR_STATS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"use of the extra [comm_status] or [fault_status] parameter not supported for /Oi* modes, using /Os" } ,{ 0, CHECK_ERR( NON_OI_UNK_REP_AS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"use of an unknown type for [represent_as] or [user_marshal] not supported for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( NON_OI_XXX_AS_ON_RETURN ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"array types with [transmit_as] or [represent_as] not supported on return type for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( NON_OI_XXX_AS_BY_VALUE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"array types with [transmit_as] or [represent_as] not supported pass-by-value for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( CALLBACK_NOT_OSF ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"[callback] requires /ms_ext" } ,{ 0, CHECK_ERR( CIRCULAR_INTERFACE_DEPENDENCY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"circular interface dependency" } ,{ 0, CHECK_ERR( NOT_VALID_AS_BASE_INTF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"only IUnknown may be used as the root interface" } ,{ 0, CHECK_ERR( IID_IS_NON_POINTER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[IID_IS] may only be applied to pointers to interfaces" } ,{ 0, CHECK_ERR( INTF_NON_POINTER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"interfaces may only be used in pointer-to-interface constructs" } ,{ 0, CHECK_ERR( PTR_INTF_NO_GUID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"interface pointers must have a UUID/IID" } ,{ 0, CHECK_ERR( OUTSIDE_OF_INTERFACE ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"definitions and declarations outside of interface body requires /ms_ext" } ,{ 0, CHECK_ERR( MULTIPLE_INTF_NON_OSF ) MAKE_E_MASK( MS_EXT_SET , C_MSG, CLASS_ERROR, NOWARN ) ,"multiple interfaces in one file requires /ms_ext" } ,{ 0, CHECK_ERR( CONFLICTING_INTF_HANDLES ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"only one of [implicit_handle], [auto_handle], or [explicit_handle] allowed" } ,{ 0, CHECK_ERR( IMPLICIT_HANDLE_NON_HANDLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[implicit_handle] references a type which is not a handle" } ,{ 0, CHECK_ERR( OBJECT_PROC_MUST_BE_WIN32 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[object] procs may only be used with \"/env win32\"" } ,{ ENV_WIN64, CHECK_ERR( _OBSOLETE_NON_OI_16BIT_CALLBACK ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"" //,"[callback] with -env dos/win16 not supported for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( NON_OI_TOPLEVEL_FLOAT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"float/double not supported as top-level parameter for /Oi mode, using /Os" } ,{ 0, CHECK_ERR( CTXT_HDL_MUST_BE_DIRECT_RETURN ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"pointers to context handles may not be used as return values" } ,{ 0, CHECK_ERR( OBJECT_PROC_NON_HRESULT_RETURN ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"procedures in an object interface must return an HRESULT" } ,{ 0, CHECK_ERR( DUPLICATE_UUID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"duplicate UUID. Same as" } ,{ 0, CHECK_ERR( ILLEGAL_INTERFACE_DERIVATION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"[object] interfaces must derive from another [object] interface such as IUnknown" } ,{ 0, CHECK_ERR( ILLEGAL_BASE_INTERFACE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"(async) interface must derive from another (async) interface" } ,{ 0, CHECK_ERR( IID_IS_EXPR_NON_POINTER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[IID_IS] expression must be a pointer to IID structure" } ,{ 0, CHECK_ERR( CALL_AS_NON_LOCAL_PROC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[call_as] type must be a [local] procedure" } ,{ 0, CHECK_ERR( CALL_AS_UNSPEC_IN_OBJECT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"undefined [call_as] must not be used in an object interface" } ,{ 0, CHECK_ERR( ENCODE_AUTO_HANDLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[auto_handle] may not be used with [encode] or [decode]" } ,{ 0, CHECK_ERR( RPC_PROC_IN_ENCODE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"normal procs are not allowed in an interface with [encode] or [decode]" } ,{ 0, CHECK_ERR( ENCODE_CONF_OR_VAR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"top-level conformance or variance not allowed with [encode] or [decode]" } ,{ 0, CHECK_ERR( CONST_ON_OUT_PARAM ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"[out] parameters may not have \"const\"" } ,{ 0, CHECK_ERR( CONST_ON_RETVAL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"return values may not have \"const\"" } ,{ 0, CHECK_ERR( INVALID_USE_OF_RETVAL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid use of \"retval\" attribute" } ,{ 0, CHECK_ERR( MULTIPLE_CALLING_CONVENTIONS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"multiple calling conventions illegal" } ,{ 0, CHECK_ERR( INAPPROPRIATE_ON_OBJECT_PROC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"attribute illegal on [object] procedure" } ,{ 0, CHECK_ERR( NON_INTF_PTR_PTR_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[out] interface pointers must use double indirection" } ,{ 0, CHECK_ERR( CALL_AS_USED_MULTIPLE_TIMES ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"procedure used twice as the caller in [call_as]" } ,{ 0, CHECK_ERR( OBJECT_CALL_AS_LOCAL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"[call_as] target must have [local] in an object interface" } ,{ 0, CHECK_ERR( CODE_NOCODE_CONFLICT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"[code] and [nocode] may not be used together" } ,{ 0, CHECK_ERR( MAYBE_NO_OUT_RETVALS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"procedures with [maybe] or [message] attributes may not [out] params or, " "return values must be of type HRESULT or error_status_t" } ,{ 0, CHECK_ERR( FUNC_NON_POINTER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"pointer to function must be used" } ,{ 0, CHECK_ERR( FUNC_NON_RPC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"functions may not be passed in an RPC operation" } ,{ 0, CHECK_ERR( NON_OI_RETVAL_64BIT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"hyper/double not supported as return value for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( MISMATCHED_PRAGMA_POP ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"#pragma pack( pop ) without matching #pragma pack( push )" } ,{ 0, CHECK_ERR( WRONG_TYPE_IN_STRING_STRUCT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"stringable structure fields must be byte/char/wchar_t" } ,{ 0, CHECK_ERR( NON_OI_NOTIFY ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"[notify] not supported for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( HANDLES_WITH_OBJECT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"handle parameter or return type is not supported on a procedure in an [object] interface" } ,{ 0, CHECK_ERR( NON_ANSI_MULTI_CONF_ARRAY ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"ANSI C only allows the leftmost array bound to be unspecified" } ,{ 0, CHECK_ERR( NON_OI_UNION_PARM ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"by-value union parameters not supported for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( OBJECT_WITH_VERSION ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"[version] attribute is ignored on an [object] interface" } ,{ 0, CHECK_ERR( SIZING_ON_FIXED_ARRAYS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[size_is] or [max_is] attribute is invalid on a fixed array" } ,{ 0, CHECK_ERR( PICKLING_INVALID_IN_OBJECT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[encode] or [decode] are invalid in an [object] interface" } ,{ 0, CHECK_ERR( TYPE_PICKLING_INVALID_IN_OSF ) MAKE_E_MASK( MS_EXT_SET, C_MSG, CLASS_ERROR, NOWARN ) ,"[encode] or [decode] on a type requires /ms_ext" } ,{ ENV_WIN64, CHECK_ERR( _OBSOLETE_INT_NOT_SUPPORTED_ON_INT16 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"" //,"\"int\" not supported on /env win16 or /env dos" } ,{ 0, CHECK_ERR( BSTRING_NOT_ON_PLAIN_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[bstring] may only be applied to a pointer to \"char\" or \"wchar_t\"" } ,{ 0, CHECK_ERR( INVALID_ON_OBJECT_PROC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"attribute invalid on a proc in an [object] interface :" } ,{ 0, CHECK_ERR( INVALID_ON_OBJECT_INTF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"attribute invalid on an [object] interface :" } ,{ ENV_WIN64, CHECK_ERR( STACK_TOO_BIG ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) ,"too many parameters or stack too big for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( NO_ATTRS_ON_ACF_TYPEDEF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) ,"no attributes on ACF file typedef, so no effect" } ,{ 0, CHECK_ERR( NON_OI_WRONG_CALL_CONV ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"calling conventions other than __stdcall or __cdecl not supported for /Oi modes, using /Os" } ,{ 0, CHECK_ERR( TOO_MANY_DELEGATED_PROCS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"too many delegation methods in the interface, requires Windows 2000 or greater " } ,{ ENV_WIN64, CHECK_ERR( _OBSOLETE_NO_MAC_AUTO_HANDLES ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"" //,"auto handles not supported with -env mac or -env powermac" } ,{ 0, CHECK_ERR( ILLEGAL_IN_MKTYPLIB_MODE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"statements outside library block are illegal in mktyplib compatability mode" } ,{ 0, CHECK_ERR( ILLEGAL_USE_OF_MKTYPLIB_SYNTAX) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal syntax unless using mktyplib compatibility mode" } ,{ 0, CHECK_ERR( ILLEGAL_SU_DEFINITION) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal definition, must use typedef in mktyplib compatibility mode" } ,{ 0, CHECK_ERR( INTF_EXPLICIT_PTR_ATTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"explicit pointer attribute [ptr] [ref] ignored for interface pointers" } ,{ ENV_WIN64, CHECK_ERR( _OBSOLETE_NO_OI_ON_MPPC ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"" //,"Oi modes not implemented for PowerMac, switching to Os" } ,{ 0, CHECK_ERR( ILLEGAL_EXPRESSION_TYPE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal expression type used in attribute" } ,{ 0, CHECK_ERR( ILLEGAL_PIPE_TYPE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal type used in pipe" } ,{ 0, CHECK_ERR( REQUIRES_OI2 ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"procedure uses pipes, using /Oicf" } ,{ 0, CHECK_ERR( ASYNC_REQUIRES_OI2 ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"procedure has an attribute that requires use of /Oicf, switching modes" } ,{ 0, CHECK_ERR( CONFLICTING_OPTIMIZATION_REQUIREMENTS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"conflicting optimization requirements, cannot optimize" } ,{ 0, CHECK_ERR( ILLEGAL_PIPE_EMBEDDING ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"pipes cannot be array elements, or members of structures or unions" } ,{ 0, CHECK_ERR( ILLEGAL_PIPE_CONTEXT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid pipe usage" } ,{ 0, CHECK_ERR( CMD_REQUIRES_I2 ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"feature requires the advanced interpreted optimization option, use -Oicf :" } ,{ 0, CHECK_ERR( REQUIRES_I2 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 3 ) ,"feature requires the advanced interpreted optimization option, use -Oicf :" } // The following 4 errors aren't used but sit here to get // the MSDN error numbers correct. ,{ 0, CHECK_ERR( CMD_REQUIRES_NT40 ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"feature invalid for the specified target system, use -target NT40 :" } ,{ 0, CHECK_ERR( CMD_REQUIRES_NT351 ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"feature invalid for the specified target system, use -target NT351 :" } ,{ 0, CHECK_ERR( REQUIRES_NT40 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"feature invalid for the specified target system, use -target NT40" } ,{ 0, CHECK_ERR( REQUIRES_NT351 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"feature invalid for the specified target system, use -target NT351" } ,{ 0, CHECK_ERR( CMD_OI1_PHASED_OUT ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 ) ,"the optimization option is being phased out, use -Oicf :" } ,{ 0, CHECK_ERR( CMD_OI2_OBSOLETE ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_WARN, 1 ) ,"the optimization option is being phased out, use -Oicf :" } ,{ 0, CHECK_ERR( OI1_PHASED_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"the optimization option is being phased out, use -ic " } ,{ 0, CHECK_ERR( OI2_OBSOLETE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"the optimization option is being phased out, use -icf" } ,{ 0, CHECK_ERR( ODL_OLD_NEW_OBSOLETE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"the -old and -new switches are obsolete, use -oldtlb and -newtlb" } ,{ 0, CHECK_ERR( ILLEGAL_ARG_VALUE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal argument value" } ,{ 0, CHECK_ERR( CONSTANT_TYPE_MISMATCH ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal expression type in constant" } ,{ 0, CHECK_ERR( ENUM_TYPE_MISMATCH ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"illegal expression type in enum" } ,{ 0, CHECK_ERR( UNSATISFIED_FORWARD ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"unsatisfied forward declaration" } ,{ 0, CHECK_ERR( CONTRADICTORY_SWITCHES ) MAKE_E_MASK( ERR_ALWAYS, D_MSG, CLASS_ERROR, NOWARN ) ,"switches are contradictory " } ,{ 0, CHECK_ERR( NO_SWITCH_IS_HOOKOLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"MIDL cannot generate HOOKOLE information for the non-rpcable union" } ,{ 0, CHECK_ERR( NO_CASE_EXPR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"no case expression found for union" } ,{ 0, CHECK_ERR( USER_MARSHAL_IN_OI ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[user_marshal] and [wire_marshal] not supported with -Oi and -Oic flags, use -Os or -Oicf" } ,{ 0, CHECK_ERR( PIPES_WITH_PICKLING ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"pipes can't be used with data serialization, i.e. [encode] and/or [decode]" } ,{ 0, CHECK_ERR( PIPE_INTF_PTR_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"all pipe interface pointers must use single indirection" } ,{ 0, CHECK_ERR( IID_WITH_PIPE_INTF_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"[iid_is()] cannot be used with a pipe interface pointer" } ,{ 0, CHECK_ERR( INVALID_LOCALE_ID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid or inapplicable -lcid switch: " } ,{ 0, CHECK_ERR( CONFLICTING_LCID ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, NOWARN ) ,"the specified lcid is different from previous specification" } ,{ 0, CHECK_ERR( ILLEGAL_IMPORTLIB ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"importlib is not allowed outside of a library block" } ,{ 0, CHECK_ERR( INVALID_FLOAT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"invalid floating point value" } ,{ 0, CHECK_ERR( INVALID_MEMBER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid member" } ,{ 0, CHECK_ERR( POSSIBLE_INVALID_MEMBER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, NOWARN ) ,"possible invalid member" } ,{ 0, CHECK_ERR( INTERFACE_PIPE_TYPE_MISMATCH ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"mismatch in pipe and interface types" } ,{ 0, CHECK_ERR( PIPE_INCOMPATIBLE_PARAMS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"string, varying array, conformant array and full pointer parameters are\n" "incompatible with pipe parameters" } ,{ 0, CHECK_ERR( ASYNC_NOT_IN ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter must be in" } ,{ 0, CHECK_ERR( OBJECT_ASYNC_NOT_DOUBLE_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter type of an [async] object must be a double pointer to an interface" } ,{ 0, CHECK_ERR( ASYNC_INCORRECT_TYPE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"incorrect async handle type" } ,{ 0, CHECK_ERR( INTERNAL_SWITCH_USED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, NOWARN ) ,"the \"internal\" switch enables unsupported features, use with caution" } ,{ 0, CHECK_ERR( ASYNC_INCORRECT_BINDING_HANDLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"async procedures cannot use auto handle" } ,{ 0, CHECK_ERR( ASYNC_INCORRECT_ERROR_STATUS_T ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"error_status_t should have both [comm_status] and [fault_status]" } ,{ 0, CHECK_ERR( NO_LIBRARY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"this construct is only allowed within a library block" } ,{ 0, CHECK_ERR( INVALID_TYPE_REDEFINITION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid type redefinition" } ,{ 0, CHECK_ERR( NOT_VARARG_COMPATIBLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"procedures with [vararg] attribute must have a SAFEARRAY(VARIANT) parameter; param order is [vararg], [lcid], [retval]" } ,{ ENV_WIN64, CHECK_ERR( TOO_MANY_PROCS_FOR_NT4 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"too many methods in the interface, requires Windows NT 4.0 SP3 or greater" } ,{ ENV_WIN64, CHECK_ERR( TOO_MANY_PROCS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"too many methods in the interface, requires Windows 2000 or greater" } ,{ 0, CHECK_ERR( OBSOLETE_SWITCH ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"switch is being phased out" } ,{ 0, CHECK_ERR( CANNOT_INHERIT_IADVISESINK ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"cannot derive from IAdviseSink, IAdviseSink2 or IAdviseSinkEx" } ,{ 0, CHECK_ERR( DEFAULTVALUE_NOT_ALLOWED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"cannot assign a default value" } ,{ ENV_WIN64, CHECK_ERR( _OBSOLETE_INVALID_TLB_ENV ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"" //,"type library generation for DOS/Win16/MAC is not supported" } ,{ 0, CHECK_ERR( WARN_TYPELIB_GENERATION ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"error generating type library, ignored" } ,{ ENV_WIN64, CHECK_ERR( OI_STACK_SIZE_EXCEEDED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) ,"exceeded stack size for /Oi, using /Os" } ,{ 0, CHECK_ERR( ROBUST_REQUIRES_OICF ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"use of /robust requires /Oicf, switching modes" } ,{ 0, CHECK_ERR( INCORRECT_RANGE_DEFN ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"incorrect range specified" } ,{ 0, CHECK_ERR( ASYNC_INVALID_IN_OUT_PARAM_COMBO ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"invalid combination of [in] only and [out] parameters for [async_uuid] interface" } ,{ ENV_WIN64, CHECK_ERR( _OBSOLETE_PLATFORM_NOT_SUPPORTED ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"" //,"DOS, Win16 and MAC platforms are not supported with /robust" } ,{ 0, CHECK_ERR( OIC_SUPPORT_PHASED_OUT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"support for NT 3.51 style stubless proxies for object interfaces will be phased out; use /Oicf: " } ,{ 0, CHECK_ERR( ROBUST_PICKLING_NO_OICF ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[encode] or [decode] with /robust requires /Oicf" } ,{ 0, CHECK_ERR( _OBSOLETE_OS_SUPPORT_PHASING_OUT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"" //,"support for DOS, Win16 and MAC platforms is being phased out." } ,{ 0, CHECK_ERR( CONFLICTING_ATTRIBUTES ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"conflicting attributes specified" } ,{ 0, CHECK_ERR( NO_CONTEXT_HANDLE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[serialize], [noserialize] can be applied to context_handles" } ,{ 0, CHECK_ERR( FORMAT_STRING_LIMITS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"the compiler reached a limit for a format string representation. See documentation for advice." } ,{ 0, CHECK_ERR( EMBEDDED_OPEN_STRUCT ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"wire format may be incorrect, you may need to use -ms_conf_struct, see documentation for advice:" } ,{ 0, CHECK_ERR( STACK_SIZE_TOO_BIG ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"a stack size or an offset bigger than 64k limit. See documentation for advice." } ,{ 0, CHECK_ERR( WIN64_INTERPRETED ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 3 ) ,"an interpreter mode forced for 64b platform" } ,{ 0, CHECK_ERR( ARRAY_ELEMENT_TOO_BIG ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"The array element size is bigger than 64k limit." } ,{ 0, CHECK_ERR( INVALID_USE_OF_LCID ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"there can be only one [lcid] parameter in a method, and it should be last or, second to last if last parameter has [retval]" } ,{ 0, CHECK_ERR( PRAGMA_SYNTAX_ERROR ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"incorrect syntax for midl_pragma" } ,{ 0, CHECK_ERR( INVALID_MODE_FOR_INT3264 ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"__int3264 is not supported in /osf mode" } ,{ 0, CHECK_ERR( UNSATISFIED_HREF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"unresolved symbol in type library" } ,{ 0, CHECK_ERR( ASYNC_PIPE_BY_REF ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"async pipes cannot be passed by value" } ,{ 0, CHECK_ERR( STACK_FRAME_SIZE_EXCEEDED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"parameter offset exceed 64k limit for interpreted procedures" } ,{ 0, CHECK_ERR( INVALID_ARRAY_ELEMENT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid array element" } ,{ 0, CHECK_ERR( DISPINTERFACE_MEMBERS ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"dispinterface members must be methods, properties or interface" } ,{ 0, CHECK_ERR( LOCAL_NO_CALL_AS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 4 ) ,"[local] procedure without [call_as]" } ,{ 0, CHECK_ERR( MULTI_DIM_VECTOR ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"multi dimensional vector, switching to /Oicf" } ,{ 0, CHECK_ERR( NETMON_REQUIRES_OICF ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"use of /netmon requires /Oicf" } ,{ ENV_WIN32, CHECK_ERR( NO_SUPPORT_IN_TLB ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"type or construct not supported in a library block because oleaut32.dll support for 64b polymorphic types is missing" } ,{ 0, CHECK_ERR( NO_OLD_INTERPRETER_64B ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"old interpreter code being generated for 64b" } ,{ 0, CHECK_ERR( SWITCH_NOT_SUPPORTED_ANYMORE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"the compiler switch is not supported anymore:" } ,{ 0, CHECK_ERR( SPAWN_ERROR ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"cannot execute MIDL engine" } ,{ 0, CHECK_ERR( BAD_CMD_FILE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"invalid or corrupt intermediate compiler file :" } ,{ 0, CHECK_ERR( INAPPLICABLE_OPTIONAL_ATTRIBUTE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"for oleautomation, optional parameters should be VARIANT or VARIANT *" } ,{ 0, CHECK_ERR( DEFAULTVALUE_WITH_OPTIONAL ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"[defaultvalue] is applied to a non-VARIANT and [optional]. Please remove [optional]" } ,{ 0, CHECK_ERR( OPTIONAL_OUTSIDE_LIBRARY ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"[optional] attribute is inapplicable outside of a library block" } ,{ 0, CHECK_ERR( LCID_SHOULD_BE_LONG ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"The data type of the [lcid] parameter must be long" } ,{ 0, CHECK_ERR( INVALID_PROP_PARAMS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"procedures with [propput], [propget] or [propputref] can't have more than one required parameter after [optional] one" } ,{ 0, CHECK_ERR( COMMFAULT_PICKLING_NO_OICF ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"[comm_status] or [fault_status] with pickling requires -Oicf" } ,{ 0, CHECK_ERR( INCONSIST_VERSION ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"midl driver and compiler version mismatch" } ,{ 0, CHECK_ERR( NO_INTERMEDIATE_FILE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"no intermediate file specified: use midl.exe" } ,{ 0, CHECK_ERR( FAILED_TO_GENERATE_PARAM ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"processing problem with a parameter in a procedure" } ,{ 0, CHECK_ERR( FAILED_TO_GENERATE_FIELD ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"processing problem with a field in a structure" } ,{ 0, CHECK_ERR( FORMAT_STRING_OFFSET_IS_ZERO ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"internal compiler inconsistency detected: the format string offset is invalid. See the documentation for more information." } ,{ 0, CHECK_ERR( TYPE_OFFSET_IS_ZERO ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ,"internal compiler inconsistency detected: the type offset is invalid. See the documentation for more information." } ,{ 0, CHECK_ERR( SAFEARRAY_NOT_SUPPORT_OUTSIDE_TLB ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 1 ) ," SAFEARRAY(foo) syntax is not supported outside of the library block, use LPSAFEARRAY for proxy" } ,{ 0, CHECK_ERR( FAILED_TO_GENERATE_BIT_FIELD ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"bit fields are not supported" } ,{ 0, CHECK_ERR( PICKLING_RETVAL_FORCING_OI ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) ,"floating point or complex return types with [decode] are not supported in -Oicf, using -Oi" } ,{ 0, CHECK_ERR( PICKLING_RETVAL_TO_COMPLEX64 ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"the return type is not supported for 64-bit when using [decode]" } ,{ 0, CHECK_ERR( WIRE_HAS_FULL_PTR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"transmitted type may not contain a full pointer for either [wire_marshal] or [user_marshal]" } ,{ 0, CHECK_ERR( WIRE_NOT_DEFINED_SIZE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"transmitted type must either be a pointer or have a constant size for [wire_marshal] and [user_marshal]" } ,{ 0, CHECK_ERR( INVALID_USE_OF_PROPGET ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"procedures with [propget] must have at least one parameter or a return value" } ,{ 0, CHECK_ERR( UNABLE_TO_OPEN_CMD_FILE ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_ERROR, NOWARN ) ,"Unable to open intermediate compiler file" } // Errors marked with CSCHAR are relics from DCE international character // support. This feature was pulled because of fundamental problems with // the spec. ,{ 0, CHECK_ERR( IN_TAG_WITHOUT_IN ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR ,"parameters with [cs_drtag] or [cs_stag] must be [in] parameters" ,"" } ,{ 0, CHECK_ERR( OUT_TAG_WITHOUT_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR ,"parameters with [cs_rtag] must be [out] parameters" ,"" } ,{ 0, CHECK_ERR( NO_TAGS_FOR_IN_CSTYPE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR ,"use of [cs_char] on [in] parameters requires parameters with [cs_stag]" ,"" } ,{ 0, CHECK_ERR( NO_TAGS_FOR_OUT_CSTYPE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR ,"use of [cs_char] on [out] parameters requires parameters with [cs_drtag] and [cs_rtag]" ,"" } ,{ 0, CHECK_ERR( CSCHAR_EXPR_MUST_BE_SIMPLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR ,"size/length expressions for cs_char arrays must be simple variables or pointers to simple variables" ,"" } ,{ 0, CHECK_ERR( SHARED_CSCHAR_EXPR_VAR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR ,"size/length expressions for cs_char arrays may not share variables with other size/length expressions" ,"" } ,{ 0, CHECK_ERR( MSCDECL_INVALID_ALIGN ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"The alignment specified in __declspec(align(N)) must be a power of two between 1 and 8192." } ,{ 0, CHECK_ERR( DECLSPEC_ALIGN_IN_LIBRARY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"__declspec(align(N)) is not supported in a TLB" } ,{ 0, CHECK_ERR( ENCAP_UNION_ARM_ALIGN_EXCEEDS_16 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"Encapsuled union arm alignment may not exceed 16" } ,{ 0, CHECK_ERR( ILLEGAL_MODIFIERS_BETWEEN_SEUKEYWORD_AND_BRACE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "Modifiers after the keywords \"struct\", \"union\", or \"enum\" are not supported" } ,{ 0, CHECK_ERR( TYPE_NOT_SUPPORTED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "Type is not supported" } ,{ 0, CHECK_ERR( UNSPECIFIED_EMBEDDED_REPRESENT_AS_NOT_SUPPORTED ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "Embedded unspecified user_marshal/represent_as is not supported" } ,{ 0, CHECK_ERR( INVALID_PACKING_LEVEL ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "The packing level must be a power of two between and including 1 and 32768" } ,{ 0, CHECK_ERR( RETURNVAL_TOO_COMPLEX_FORCE_OS ) MAKE_E_MASK( ERR_ALWAYS , C_MSG, CLASS_WARN, 2 ) , "Return value too complex, switching to /Os" } ,{ 0, CHECK_ERR( NO_CONFORMANT_CSCHAR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR , "cs_char arrays may not be conformant" ,"" } ,{ 0, CHECK_ERR( NO_MULTIDIMENSIONAL_CSCHAR ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) // CSCHAR , "cs_char arrays may not be multidimensional" ,"" } ,{ 0, CHECK_ERR( BYTE_COUNT_IN_NDR64 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "[byte_count] has been depreciated for ndr64" } ,{ 0, CHECK_ERR( SIZE_EXCEEDS_2GB ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "The size must be less then 2GB. See documentation for details" } ,{ 0, CHECK_ERR( ARRAY_DIMENSIONS_EXCEEDS_255 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "The array dimensions exceeds a compiler limit of 255. See documention for details" } ,{ 0, CHECK_ERR( UNSPECIFIED_REP_OR_UMRSHL_IN_NDR64 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "Unspecifed [represent_as] and [user_marshal] has been depreciated for ndr64. Define the presented type" } ,{ 0, CHECK_ERR( ASYNC_NDR64_ONLY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) , "async interface supports NDR64 only: only do this when you are sure the interface will not use DCE transfer syntax ever. use -protocol all if you are not sure" } ,{ 0, CHECK_ERR( UNSUPPORT_NDR64_FEATURE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "ndr64 transfer syntax is not supported in 32bit platform yet" } ,{ 0, CHECK_ERR( UNSUPPORTED_LARGE_GENERIC_HANDLE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "large generic handles are not supported in the ndr64 protocol" } ,{ 0, CHECK_ERR( OS_IN_NDR64 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "The Os optimization mode is not supported in the ndr64 protocol" } ,{ 0, CHECK_ERR( UNEXPECTED_OS_IN_NDR64 ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "internal compiler inconsistency detected: Os optimization in ndr64 mode" } ,{ 0, CHECK_ERR( NDR64_ONLY_TLB ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "type library needs to be generated in DCE protocol run" } ,{ 0, CHECK_ERR( PARTIAL_IGNORE_IN_OUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "[partial_ignore] can only be applied to [in, out] parameters" } ,{ 0, CHECK_ERR( PARTIAL_IGNORE_UNIQUE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "[partial_ignore] may only be used with [unique] pointers" } ,{ 0, CHECK_ERR( PARTIAL_IGNORE_PICKLING ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "[partial_ignore] cannot be used with pickling" } ,{ 0, CHECK_ERR( PARTIAL_IGNORE_NO_OI ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) , "[partial_ignore] used in /Oi mode, switching to /Oicf mode" } ,{ 0, CHECK_ERR( PARTIAL_IGNORE_IN_TLB ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "[partial_ignore] cannot be used in a TLB" } ,{ 0, CHECK_ERR( CORRELATION_DERIVES_FROM_IGNORE_POINTER ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "correlation expressions cannot use [ignore] pointers" } ,{ 0, CHECK_ERR( OUT_ONLY_FORCEALLOCATE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) , "[force_allocate] doesn't affect [out] only parameters" } ,{ 0, CHECK_ERR( FORCEALLOCATE_ON_PIPE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) , "[force_allocate] is not applicable to pipe argument" } ,{ 0, CHECK_ERR( FORCEALLOCATE_SUPPORTED_IN_OICF_ONLY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 2 ) , "use of [force_allocate] requires /Oicf, switching modes" } ,{ 0, CHECK_ERR( INVALID_FEATURE_FOR_TARGET ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "The feature cannot be used on the target system" } ,{ 0, CHECK_ERR( SAFEARRAY_IF_OUTSIDE_LIBRARY ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) , "SAFEARRAY(interface pointer) doesn't work using midl generated proxy" } ,{ 0, CHECK_ERR( OLEAUT_NO_CROSSPLATFORM_TLB ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "oleaut32.dll in build system doesn't support cross platform tlb generation" } ,{ 0, CHECK_ERR( INVALID_PROPPUT ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "property put function must have at least one argument and must have exactly one argument after any [optional] or [lcid] arguments" } ,{ 0, CHECK_ERR( UNSIZED_PARTIAL_IGNORE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) , "parameters with [partial_ignore] must have a well defined size" } ,{ 0, CHECK_ERR( NOT_DUAL_INTERFACE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 4 ) ,"dual interface should be derived from IDispatch" } ,{ 0, CHECK_ERR( NEWLYFOUND_INAPPLICABLE_ATTRIBUTE) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"inapplicable attribute" } ,{ 0, CHECK_ERR( WIRE_COMPAT_WARNING ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"wire_compat should be used for known compatibility problems only and should not be used for new code" } ,{ 0, CHECK_ERR( INVALID_VOID_IN_DISPINTERFACE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_ERROR, NOWARN ) ,"invalid usage of void type in a dispinterface" } ,{ 0, CHECK_ERR( ACF_IN_OBJECT_INTERFACE ) MAKE_E_MASK( ERR_ALWAYS, C_MSG, CLASS_WARN, 1 ) ,"acf attributes are not applicable in object interface" } }; /* end of array of structs initialization */