如何在Visual C ++中进行编译时输出编译时数字常量?

| Visual C ++具有将字符串输出到编译器输出的“ 0”。现在我有一家工厂:
template<class Type>
CComPtr<Type> CreateComObject()
{
   CComPtr<Type> newObject( new CComObject<Type> );
   //do some tuning to the object
   return newObject;
}
我想将传递给
new
的类的大小(即
sizeof( CComObject<Type> )
)输出到编译器输出中。Look0似乎只接受字符串。 如何输出编译时数字常量?     
已邀请:
如果我正确理解了您的问题,那么我认为您可以这样做:
template<size_t size> 
struct overflow{ operator char() { return size + 256; } }; //always overflow
//if you doubt, you can use UCHAR_MAX +1 instead of 256, to ensure overflow.

template<class Type>
CComPtr<Type> CreateComObject()
{
   CComPtr<Type> newObject( new CComObject<Type> );
   char(overflow<sizeof(CComObject<Type>)>());
   return newObject;
}
compilation6ѭ的值将在编译期间作为警告消息打印。 观看此小型演示:http://www.ideone.com/Diiqy 查看这些消息(来自上面的链接):   prog.cpp:在成员函数中   ‘overflow :: operator char()[with   unsigned int size = 4u]’:   prog.cpp:在   成员功能   ‘overflow :: operator char()[with   unsigned int size = 12u]’:   prog.cpp:   在成员函数中   ‘overflow :: operator char()[with   unsigned int size = 400u]’: 在Visual Studio中,您可以在“生成输出”选项卡中看到这些消息。它可能不会出现在“错误列表”>“警告”选项卡中。 这个想法来自于我的另一个解决方案: 在C ++中编译时计算并打印阶乘     

要回复问题请先登录注册