小编jze*_*eda的帖子

在C或C++中返回结构是否安全?

我的理解是不应该这样做,但我相信我已经看过这样的例子(注意代码在语法上不一定正确,但想法就在那里)

typedef struct{
    int a,b;
}mystruct;
Run Code Online (Sandbox Code Playgroud)

然后这是一个功能

mystruct func(int c, int d){
    mystruct retval;
    retval.a = c;
    retval.b = d;
    return retval;
}
Run Code Online (Sandbox Code Playgroud)

我明白我们应该总是返回一个指向malloc'ed结构的指针,如果我们想做这样的事情,但我很肯定我已经看到了做类似这样的事情的例子.它是否正确?就个人而言,我总是要么返回一个指向malloc'ed结构的指针,要么只是通过引用函数进行传递并修改那里的值.(因为我的理解是,一旦函数的范围结束,可以覆盖用于分配结构的任何堆栈).

让我们在问题中添加第二部分:这是否因编译器而异?如果是这样,那么桌面编译器的最新版本的行为是什么:gcc,g ++和Visual Studio?

关于此事的想法?

c c++ struct function return-type

80
推荐指数
5
解决办法
6万
查看次数

让Qt Creator使用MinGW

本教程在这里展示了如何的工具链添加到Qt Creator的.我不需要那个,因为我安装的MinGW自动显示在那里(我检查了路径,它是正确的).

如何使用它编译我的项目?我检查了左边的项目选项卡,在没有任何构建配置下,我可以选择使用MinGW(仅限Visual Studio).

然后我去了Tools->Options->Build and Run->Qt Version,并尝试为MinGW添加Qt版本,但我根本没有为MinGW的qmake.exe(或者我,我只是不知道?).

如何让Qt Creator使用MinGW?

注意:我有Qt SDK.

qt mingw qt-creator

8
推荐指数
1
解决办法
2万
查看次数

Qt的信号和插槽是发布订阅的形式吗?

我认为我没有在任何地方看到这种比较,但他们会被认为是相同的吗?如果没有,为什么不呢?

qt publish-subscribe

7
推荐指数
2
解决办法
1793
查看次数

LNK2005将静态openCV库与Visual Studio和QT Creator链接时出错

我构建了静态openCV 2.3库.我的项目目前使用动态的没有问题,但现在我想使用静态库.我将libs添加到我的.pro文件中:

LIBS += "C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_calib3d231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_contrib231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_core231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_features2d231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_flann231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_gpu231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_haartraining_engine.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_highgui231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_imgproc231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_legacy231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_ml231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_objdetect231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_ts231.lib" \
"C:\Program Files\openCV_VS_static\opencv\build\lib\Release\opencv_video231.lib"
Run Code Online (Sandbox Code Playgroud)

并包括目录:

INCLUDEPATH += "C:\Program Files\openCV_VS_static\opencv\build\include"
INCLUDEPATH += "C:\Program Files\openCV_VS_static\opencv\build\include\opencv"
Run Code Online (Sandbox Code Playgroud)

当我尝试构建时,我收到以下错误:

LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in MSVCRT.lib(MSVCR100.dll)
LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRT.lib(MSVCR100.dll)
LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined …
Run Code Online (Sandbox Code Playgroud)

linker qt opencv lnk2005 visual-studio

6
推荐指数
2
解决办法
8418
查看次数

为什么这次调用QFtp.put会导致崩溃?

我正在尝试使用QFtp将.avi文件上传到FTP服务器:

void MyFTP::recordingDone(QString &fileName){
remainingFiles.push_back(new QString(fileName));

commands[qftp.connectToHost(globalProperties.ftpServer)] = "connect to host";
commands[qftp.login(globalProperties.ftpUsername,globalProperties.ftpPassword)] = "login";
commands[qftp.cd("myapp")] = "cd myapp";
commands[qftp.cd("Videos")] = "cd videos";    
QDir().cd(globalProperties.videoStorageLocation);
qDebug()<<"Opening "<<fileName<<endl;
if(QFile::exists(fileName)){
    qDebug()<<"File exists"<<endl;
}
else{
    qDebug()<<"File does not exist"<<endl;
}
QFile file(fileName);
qDebug()<<"putting"<<endl;
qftp.put(&file,fileName);
qDebug()<<"Closing ftp"<<endl;
qftp.close();
}
Run Code Online (Sandbox Code Playgroud)

我已连接到命令完成信号并使用插槽调试输出信息:

void TrusionFTP::ftpCommandDone(int id, bool error){    
qDebug()<<"command: "<<commands[id]<<": "<<error;
if(error){
    qDebug()<<qftp.errorString()<<endl;
    if (qftp.hasPendingCommands()){
        qDebug()<<"Pending commands"<<endl;
    }
}
}
Run Code Online (Sandbox Code Playgroud)

这是崩溃前的输出:

Opening  "2012-Mar-06-12-19-57.avi" 

File exists 

putting 

Closing ftp 

command:  "connect to host" :  false 
command:  "login" :  false 
command: …
Run Code Online (Sandbox Code Playgroud)

c++ ftp qt

0
推荐指数
1
解决办法
374
查看次数