2008-11-15 1 views
0

나는 뭔가를 놓치고 있는지 알고 싶습니다 :typedef가 알 수없는 형식을 사용하는 경우 Microsoft MIDL에서 오류를보고하지 않습니다. 버그입니까?

//this is test.idl 
typedef foo foo_t; 
// end of test.idl 

나는 다음과 같은 명령을 test.idl 컴파일 할 때 :

midl /W4 test.idl 

내가 얻을이 출력

Microsoft (R) 32b/64b MIDL Compiler Version 6.00.0366 
Copyright (c) Microsoft Corporation 1991-2002. All rights reserved. 
Processing .\test.idl 
test.idl 

및 내가 틀린 test.h이 메세지의 하단에

을 가지고있다.
typedef foo_t; 

알려지지 않은 foo 유형이 자동으로 삭제되었습니다.

"foo는 알 수없는 유형"이라는 오류 메시지가 표시 될 것으로 예상 했습니까?

MIDL 명령에 특정 인수를 전달해야합니까?

MIDL does not report an error if a typedef uses an unknown type

:

나는
/* this ALWAYS GENERATED file contains the definitions for the 
interfaces */ 

/* File created by MIDL compiler version 6.00.0366 */ 
/* at Thu Nov 13 11:47:40 2008 
*/ 
/* Compiler settings for test.idl: 
    Oicf, W4, Zp8, env=Win32 (32b run) 
    protocol : dce , ms_ext, c_ext, robust 
    error checks: allocation ref bounds_check enum stub_data 
    VC __declspec() decoration level: 
     __declspec(uuid()), __declspec(selectany), __declspec 
(novtable) 
     DECLSPEC_UUID(), MIDL_INTERFACE() 
*/ 
//@@MIDL_FILE_HEADING() 

#pragma warning(disable: 4049) /* more than 64k source lines */ 

/* verify that the <rpcndr.h> version is high enough to compile this 
file*/ 
#ifndef __REQUIRED_RPCNDR_H_VERSION__ 
#define __REQUIRED_RPCNDR_H_VERSION__ 475 
#endif 

#include "rpc.h" 
#include "rpcndr.h" 

#ifndef __RPCNDR_H_VERSION__ 
#error this stub requires an updated version of <rpcndr.h> 
#endif // __RPCNDR_H_VERSION__ 

#ifndef __test_h__ 
#define __test_h__ 

#if defined(_MSC_VER) && (_MSC_VER >= 1020) 
#pragma once 
#endif 

/* Forward Declarations */ 

#ifdef __cplusplus 
extern "C"{ 
#endif 

void * __RPC_USER MIDL_user_allocate(size_t); 
void __RPC_USER MIDL_user_free(void *); 

/* interface __MIDL_itf_test_0000 */ 
/* [local] */ 

typedef foo_t; 

extern RPC_IF_HANDLE __MIDL_itf_test_0000_v0_0_c_ifspec; 
extern RPC_IF_HANDLE __MIDL_itf_test_0000_v0_0_s_ifspec; 

/* Additional Prototypes for ALL interfaces */ 

/* end of Additional Prototypes */ 

#ifdef __cplusplus 
} 

#endif 

#endif 

답변

0

7.00.0500

내가 Microsoft에 다음과 같은 버그를 제출 MIDL 컴파일러 버전과 같은 결과를 얻었다
관련 문제