Compiler Error C3508


The new home for Visual Studio documentation is Visual Studio 2017 Documentation on

The latest version of this topic can be found at Compiler Error C3508.

type': is not a valid Automation type

An invalid type was specified.

The following sample generates C3508:

// C3508.cpp  
#define _ATL_DEBUG_QI  
#define WIN32_LEAN_AND_MEAN  
#define STRICT  
#ifndef _WIN32_WINNT  
#define _WIN32_WINNT 0x0400  
#define _ATL_ATTRIBUTES 1  
#include <atlbase.h>  
extern CComModule _Module;  
#include <atlcom.h>  
#include <atlctl.h>  
#include <atlstr.h>  
extern "C" int printf_s(const char*, ...);  
union U  
// try the following two lines instead  
// [export]  
// struct U  
   int i, j;  
__interface I  
   [id(1)] HRESULT func(U* u);  
struct C : I  
   HRESULT func(U*)   // C3508  
      return E_FAIL;  
int main()