所以我错误地将一个 int
传递给一个函数参数,期望一个指向 const 对象的指针,我从 GCC 收到了这个警告:
jni/../../../Source/Controller/UserExperienceManager.cpp: In member function 'void CUserExperienceManager::SendUXPToPOS(Types::CString)':
jni/../../../Source/Controller/UserExperienceManager.cpp:243:78: warning: invalid conversion from 'int' to 'const WebService_POSAgent::CDataCheck*' [-fpermissive]
jni/../../../../../Core/WebServices/Services/POSAgent/POSAgent.h:80:18: warning: initializing argument 2 of 'CEvent& WebService_POSAgent::CPOSAgent::AddUserExperienceID(Types::CString, const WebService_POSAgent::CDataCheck*, Types::CString)' [-fpermissive]
我试图为此创建一个可重现的示例,但我无法做到,我也不能在这里分享太多代码。我在 MSVC9 上编译了同样的东西,它正确地给了我一个错误。我很震惊,我没有从 GCC 收到错误!有人知道为什么吗?以下是一些简单的片段:
函数声明(类成员函数):
CEvent& AddUserExperienceID(CString userExperienceId, CDataCheck const* check, CString requestId = REQUEST_ID);
函数调用站点:
int nCheckNum = /*some value*/;
CPOSAgent::Instance().AddUserExperienceID(m_UserExperienceId, nCheckNum);
最佳答案
您正在使用 -fpermissive
集编译该代码,这会将错误降级为警告。
-fpermissive
Downgrade some diagnostics about nonconformant code from errors to warnings.
Thus, using -fpermissive will allow some nonconforming code to compile.
关于c++ - GCC 允许隐式 int 到指针转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483166/