加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

尚未声明愚蠢的C语法

发布时间:2020-12-16 09:50:18 所属栏目:百科 来源:网络整理
导读:我正在尝试使用最初为 Windows编写的Qt C项目,并将其交叉编译为嵌入式 Linux.现在这个程序在Windows上编译查找和工作,所以这个问题必须是特定于操作系统的东西(我认为不会发生Qt代码)或配置相关,但我很难跟踪它,因为我没有完全理解C语法. 我的make命令: arm
我正在尝试使用最初为 Windows编写的Qt C项目,并将其交叉编译为嵌入式 Linux.现在这个程序在Windows上编译查找和工作,所以这个问题必须是特定于操作系统的东西(我认为不会发生Qt代码)或配置相关,但我很难跟踪它,因为我没有完全理解C语法.

我的make命令:

arm-linux-gnueabihf-g++ -c -march=armv7-a -marm -mthumb-interwork
-mfloat-abi=hard -mfpu=neon -mtune=cortex-a8 -O2 -O3 -Wall -W -D_REENTRANT -DCHL80Net -DPHASE_TO_NEUTRAL -DCHL80NET -DCANLCD_BUILD -DQT_NO_DEBUG -DQT_XML_LIB -DQT_GUI_LIB -DQT_CORE_LIB -DQT_SHARED -I../mkspecs/qws/linux-am335x-g++ -I. -I../include/QtCore -I../include/QtGui -I../include/QtXml -I../include -I. -IApp -IApp/Model/ModelSim -IApp/Model -I. -IPages -IApp/GUI/Widgets -IApp/GUI/Pages -IApp/GUI -IApp/GUI/Widgets -IApp/GUI/Pages/Util -IApp/GUI/Pages -IApp/Log4Qt -I.obj -o .obj/CanInterface.o App/Can/CanInterface.cpp

错误:

App/Can/CanInterface.cpp: In member function ‘void
CanInterface::closeConnection()’: App/Can/CanInterface.cpp:68:5:
error: ‘::close’ has not been declared make: * [.obj/CanInterface.o]
Error 1

这是有问题的代码行:

void CanInterface::closeConnection()
{
    ::close(m_socket);
    m_socket = -1;

起初我觉得这看起来并不像有效的代码,但我真的不知道C所以我不得不做一些研究,看起来这个:: function()语法是为了确保从全局解决问题命名空间而不是本地命名空间.

所以我想要找出的是命名空间应该声明这个close()函数.如果我对这段代码的理解是正确的,我不需要在CanInterface类中查找未声明的函数,但它是父类?

在CanInterface类的头文件中,我发现了这个:

class CanInterface : public QObject 
{
        Q_OBJECT

我认为这意味着它来自QObject类的inharents.所以:

>我在正确的轨道上吗?
>我如何知道是否需要查看缺少close()函数的QObject类,或者我是否需要继续运行?是:: close以某种方式告诉我需要搜索多少级别的嵌套类?
>有关进一步调查的其他想法或提示吗?

解决方法

C在名称空间中封装名称以避免命名冲突.对于将特定于库的前缀添加到该库中的函数名称的C实践有点类似,例如,C中的my_library_foo()可能在C中被称为my_library :: foo().当::出现在名称的开头时,意味着名称是完全限定的:从全局名称空间开始查找它而不是当前/封闭名称空间,就像绝对(/ etc / passwd /)与相对名称一样. (foo / bar)文件名.

因此,名称:: close旨在解析为全局命名空间中声明的close函数,该函数将通过包含< unistd.h>来放置.在POSIX系统上.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读