小编uli*_*tko的帖子

GCC中枚举开关的控制流分析不足

在以下C++代码中:

typedef enum { a, b, c } Test;

int foo(Test test) {
    switch (test) {
        case a: return 0;
        case b: return 1;
        case c: return 0;
    }
}
Run Code Online (Sandbox Code Playgroud)

编译时发出警告-Wall,表示控件到达非void函数的结尾.为什么?


编辑

一般说来test示例中的变量可以包含任何值都是正确的.

foo(12354) 不编译:

> test.cpp:15:14: error: invalid conversion from ‘int’ to ‘Test’
> test.cpp:15:14: error:   initializing argument 1 of ‘int foo(Test)’

因为12354是不是一个有效的Test值(虽然它确实是明文有效Ç,但它不是在C++中).

你肯定可以显式地将任意整数常量强制转换为枚举类型,但是不是认为是未定义的行为吗?

c++ gcc gcc-warning control-flow

10
推荐指数
2
解决办法
1587
查看次数

预处理器#define检查语言版本?C++ 98/C++ 03/C++ 11

是否有预处理器定义,我可以在#ifdef检查中使用它来辨别不同版本的C++语言?

c++ c++11

9
推荐指数
1
解决办法
1104
查看次数

无法使用delphi indy发送UTF-8电子邮件

这是我的代码

电子邮件正文有一些unicode字符

  LSMTP := TIdSMTP.Create(nil);
  try
    LMsg := TIdMessage.Create(LSMTP);
    try
      with LMsg do
      begin
        Subject := Subj;
        Recipients.EMailAddresses := Email;    
        WriteToLog(cInformation,'To: '+Recipients.EMailAddresses);    
        From.Address := ReplaceVariables(From_Address);    
        From.Name    := ReplaceVariables(From_Name);    
        Body.Text    := EmailMessage;    
        ContentTransferEncoding := '8bit';    
        CharSet := 'UTF-8';    
        ContentType := 'text/plain';    
     end;
Run Code Online (Sandbox Code Playgroud)

这就是我得到的

Content-Type: text/plain; charset=us-ascii <<<<< WRONG
Content-Transfer-Encoding: 8bit
Date: Fri, 23 Mar 2012 17:53:19 +0000
Run Code Online (Sandbox Code Playgroud)

使用delphi 2009

delphi unicode indy

9
推荐指数
2
解决办法
8704
查看次数

续行+行注释,在同一行?

我在shell脚本中调用了很长的参数列表:

foo-command \
    --important-argument $ONE \
    --indispensable-flag $ENABLED \
    --an-optional-toggle "will probably be commented out some day" \
    $ARGUMENTS \
    $MORE_ARGUMENTS
Run Code Online (Sandbox Code Playgroud)

我不能在这个多行电话中插入评论,可以吗?

例如,让我们说,我该如何评论该--an-optional-toggle线?
我怎么能# in sorted order在之后添加评论$ARGUMENTS

无论我尝试什么,octothorp #符号阴影线延续反斜杠\,反之亦然.有什么建议吗?

bash shell sh

9
推荐指数
2
解决办法
526
查看次数

C++初始化非常量静态成员变量?

我得到了成员变量'objectCount'的资格错误.编译器还返回'ISO C++禁止非const静态成员的类内初始化'.这是主要类:

#include <iostream>
#include "Tree.h"
using namespace std;

int main()
{
    Tree oak;
    Tree elm;
    Tree pine;

    cout << "**********\noak: " << oak.getObjectCount()<< endl;
    cout << "**********\nelm: " << elm.getObjectCount()<< endl;
    cout << "**********\npine: " << pine.getObjectCount()<< endl;
}
Run Code Online (Sandbox Code Playgroud)

这是包含非const静态objectCount的树类:

#ifndef TREE_H_INCLUDED
#define TREE_H_INCLUDED

class Tree
{
    private:
        static int objectCount;
    public:
        Tree()
        {
            objectCount++;
        }
        int getObjectCount() const
        {
            return objectCount;
        }
    int Tree::objectCount = 0;
}
#endif // TREE_H_INCLUDED
Run Code Online (Sandbox Code Playgroud)

c++ static const

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

在2D阵列上创建4D视图,将其划分为固定大小的单元格

我有一个tnumpy 的2D数组:

>>> t = numpy.array(range(81)).reshape((9,9))
>>> t
array([[ 0,  1,  2,  3,  4,  5,  6,  7,  8],
       [ 9, 10, 11, 12, 13, 14, 15, 16, 17],
       [18, 19, 20, 21, 22, 23, 24, 25, 26],
       [27, 28, 29, 30, 31, 32, 33, 34, 35],
       [36, 37, 38, 39, 40, 41, 42, 43, 44],
       [45, 46, 47, 48, 49, 50, 51, 52, 53],
       [54, 55, 56, 57, 58, 59, 60, 61, 62],
       [63, 64, 65, 66, 67, …
Run Code Online (Sandbox Code Playgroud)

python numpy multidimensional-array

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

QObject在删除时是否区分堆栈和堆分配的子项?

根据Qt文档:

QObjects在对象树中组织自己.当您使用另一个对象作为父对象创建QObject时,该对象将自动将其自身添加到父对象的children()列表中.父母取得对象的所有权; 即,它将自动删除其析构函数中的子项.

对于我来说,这意味着当一个QObject被删除时,它会通过并在它存储在子列表中的所有指针上调用delete.

但是,没有必要动态分配子项,并且使用堆栈分配的对象构建QObject树是完全合法的.

根据标准规范,对未指向动态分配对象的指针调用delete是未定义的行为,这可能导致从"无"到程序崩溃的任何内容.

IMO不太可能是QObject,它几乎是几乎整个Qt类集合的主干,依赖于可能产生未定义行为的东西.

那么,QObject在删除时是否区分堆栈和堆分配子项?如果是这样,究竟是怎么回事?

c++ qt memory-management undefined-behavior qobject

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

Unicode中的国家(非阿拉伯语)数字?

我知道unicode包含来自大多数世界aphabets的所有字符..但是数字呢?它们是否是unicode的一部分?我无法找到直接答案.谢谢

unicode

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

RPM 有条件 可能需要在规格文件中

正如主题所读,我想知道是否可以在 RPM 规范文件中使所需的包依赖于某个条件?

例如,检查 shell 语句是否在安装目标上,例如主机正在使用绑定接口,并且仅当 Require 生效时。

rpm-spec

7
推荐指数
1
解决办法
7225
查看次数

以编程方式在Qt中设置QLabel的像素图

我们用来显示图片的Widget是QLabel.我们可以通过设置pixmap属性直接从QtCreator中完成.

我们应该首先创建一个资源文件,然后将该图像添加到该资源文件中.要创建Qt资源文件,我们转到菜单:File> Qt> Qt Resource File.

我们可以使用Qt Creator设置QLabel的图像...

但我想根据用户的一些输入改变图片

我试着做以下事情:

#include "form1.h"
#include "form.h"
#include "ui_form.h"
#include "ui_form1.h"

Form::Form(QWidget *parent) :
    QWidget(parent),
    ui(new Ui::Form)
{
    ui->setupUi(this);
    QPixmap * mypix = new QPixmap(":/karim/test.png");
    ui->label->setPixmap(mypix);
    delete mypix;
}
Run Code Online (Sandbox Code Playgroud)

但我得到了这个错误

..\Project\form.cpp: In constructor 'Form::Form(QWidget*)':

..\Project\form.cpp:12: error: no matching function for call to 'QLabel::setPixmap(QPixmap*&)'

c:\QtSDK\Simulator\Qt\mingw\include/QtGui/qlabel.h:123: note: candidates are: void QLabel::setPixmap(const QPixmap&)
Run Code Online (Sandbox Code Playgroud)

可能是什么问题呢 ?

c++ qt

6
推荐指数
1
解决办法
3万
查看次数