c++ - GCC 允许隐式 int 到指针转换?

标签 c++ gcc

所以我错误地将一个 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.

What does the fpermissive flag do?

关于c++ - GCC 允许隐式 int 到指针转换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23483166/

相关文章:

c++ - 从 STM32CubeIDE 启动 QEMU 模拟器时出现问题

gcc - 编译 WITH_PIC (-DWITH_PIC, --with-pic) 实际上有什么作用?

c++ - 使用 gcc 编译代码后,std::out_of_range 异常字符串不会打印

c - gcc 编译时类型解析

c++ - Boost图形库,修复节点大小

c++ - 我可以转发声明一个 lambda 以便其上面的代码可以调用它吗?

c++ - 数据拼接时输出成员变量c++

c - 将两个二进制文件(可执行文件)打包到一个文件中

C 中的编译时 LCM/GCD

c++ - 无效的迭代器 : how to get some debug info on it when the first time it is used?