• 2478阅读
  • 4回复

QT与vc++差异 [复制链接]

上一主题 下一主题
离线wysxmu
 

只看楼主 倒序阅读 楼主  发表于: 2018-06-01

///////////////////////////////////以下为QT5.6+VS2015编译器//////////////////////////////////////////////////
#include <QCoreApplication>

int main(int argc, char *argv[])
{
    QCoreApplication a(argc, argv);

    char* p="abc";//这里报错: C2440: “初始化”: 无法从“const char [4]”转换为“char *”

    return a.exec();
}



///////////////////////////////////以下为VS C++ 2015 //////////////////////////////////////////////////
#include "stdafx.h"
#include <iostream>
#include<cstdio>
using namespace std;
int main()
{
    char* p= "abc\0";//编译正常运行

    cout << p;
    cin >> p;
    return 0;
}


编译器一样的,为什么Qt的通不过呢
离线cliiiiii

只看该作者 1楼 发表于: 2018-06-02
我猜想可能是qt的库函数做了些特殊处理。。。。
whatever
离线白黎昕

只看该作者 2楼 发表于: 2018-06-02
怎么说呢,感觉Qt还是做了人性化处理,使得C++图形化应用程序的开发更加简单,MFC封装的挺好,可以直接调用Windows API,但是就是因为将Windows API封装在了MFC中,使得MFC开发变得困难了不少。各种Windows消息,弄得头都大了,感觉还是QT亲民,为QT点个赞。QT加油,图形化界面市场就靠你拿下了。
离线ustone

只看该作者 3楼 发表于: 2018-06-02
char* p="abc";
改成
const char* p="abc";
试试。
离线dbzhang800

只看该作者 4楼 发表于: 2018-06-05
Qt5.6 默认启用了 编译器的 /Zc:strictStrings 选项,仅此而已。(如果你实在不喜欢,去掉就是了)


另外,使用VS时,建议你始终使用该选项。
快速回复
限100 字节
 
上一个 下一个