Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/130.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为函数创建别名_C++_Visual C++ - Fatal编程技术网

C++ 为函数创建别名

C++ 为函数创建别名,c++,visual-c++,C++,Visual C++,我想为CPPUNIT\u ASSERT\u EQUAL\u消息(字符串消息,T预期,T实际)创建一个别名。我试过: template<class T> void (&_assert)(string, T, T) = &CPPUNIT_ASSERT_EQUAL_MESSAGE; 正确的语法是什么 Simple put,没有正确的语法,因为正如phoeagon所指出的,这是一个宏,没有函数: template<class T> inline void _a

我想为
CPPUNIT\u ASSERT\u EQUAL\u消息(字符串消息,T预期,T实际)
创建一个别名。我试过:

template<class T> void (&_assert)(string, T, T) = &CPPUNIT_ASSERT_EQUAL_MESSAGE;

正确的语法是什么

Simple put,没有正确的语法,因为正如phoeagon所指出的,这是一个宏,没有函数:

template<class T> 
inline void _assert(const string& message, T expected, T actual) 
{ CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual); }

简单地说,没有正确的语法,因为正如phoeagon所指出的,这是一个宏,没有函数:

template<class T> 
inline void _assert(const string& message, T expected, T actual) 
{ CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual); }

只需创建一个转发功能:

template<class T> 
inline void _assert(const string& message, T expected, T actual) 
{ CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual); }
模板
内联void\u断言(常量字符串和消息,预期为T,实际为T)
{CPPUNIT_ASSERT_EQUAL_MESSAGE(MESSAGE,预期,实际);}

只需创建一个转发功能:

template<class T> 
inline void _assert(const string& message, T expected, T actual) 
{ CPPUNIT_ASSERT_EQUAL_MESSAGE(message, expected, actual); }
模板
内联void\u断言(常量字符串和消息,预期为T,实际为T)
{CPPUNIT_ASSERT_EQUAL_MESSAGE(MESSAGE,预期,实际);}

CPPUNIT\u ASSERT\u EQUAL\u MESSAGE
是一个宏而不是一个函数,因此您可以使用
内联
函数的实际定义“包装”它(如前面的答案所建议的),或者简单地定义一个别名宏:

#define _assert CPPUNIT_ASSERT_EQUAL_MESSAGE

在这两种方法中,我会选择包装函数方法,这样就可以在名称空间中声明它,并避免命名冲突。

CPPUNIT\u ASSERT\u EQUAL\u MESSAGE
是一个宏,而不是一个函数,因此您可以使用
内联
函数的实际定义“包装”它(正如前面的回答所建议的)或者简单地定义别名宏:

#define _assert CPPUNIT_ASSERT_EQUAL_MESSAGE

在这两种方法中,我会选择包装函数方法,这样就可以在名称空间中声明它,并避免命名冲突。

您确定
CPPUNIT\u ASSERT\u EQUAL\u MESSAGE
是函数还是宏?我不确定实际上。。。我怎么知道?你确定
CPPUNIT\u ASSERT\u EQUAL\u MESSAGE
是函数而不是宏吗?我不确定实际上。。。我怎么知道?