小编Igo*_*Oks的帖子

何时为gcc使用-O2标志?

如果我使用"-O2"标志,性能会提高,但编译时间会变长.

我该如何决定是否使用它?

也许O2在某些特定类型的代码中有很大差异(例如数学计算?),我应该只将它用于项目的那些部分?

编辑:我想强调的是,为项目的所有组件设置-O2会将总编译时间从10分钟更改为30分钟.

c++ unix optimization gcc

10
推荐指数
4
解决办法
7260
查看次数

防止创建其成员函数都是静态的类

我的类ClassA中的所有成员变量和成员函数都是静态的.

如果用户正在尝试(错误地)创建此类的对象,则会收到警告:"ClassA,本地变量从未引用",因为所有函数都是静态的,因此永远不会引用此对象.所以,我想阻止用户尝试创建这个类的对象.

是否足以创建一个私有默认(无变量)构造函数?或者我是否还必须创建私有拷贝构造函数和私有赋值运算符(以防止使用默认构造函数)?如果我也必须创建它们,也许最好只创建一些虚拟纯虚函数,这会阻止用户创建一个对象?

谢谢

c++ static constructor namespaces

9
推荐指数
3
解决办法
1054
查看次数

在C/C++中有效地转换Hex,Binary和Decimal

我有正整数的3个基本表示:

  1. 十进制,无符号长变量(例如unsigned long int NumDec = 200).
  2. 十六进制,字符串变量(例如字符串NumHex ="C8")
  3. 二进制,字符串变量(例如字符串NumBin ="11001000")

我希望能够以最有效的方式在所有3个表示中的数字之间进行转换.即实现以下6个功能:

unsigned long int Binary2Dec(const string & Bin) {}
unsigned long int Hex2Dec(const string & Hex) {}
string Dec2Hex(unsigned long int Dec) {}
string Binary2Hex(const string & Bin) {}
string Dec2Binary(unsigned long int Dec) {}
string Hex2Binary(const string & Hex) {}
Run Code Online (Sandbox Code Playgroud)

每种方法最有效的方法是什么?我可以使用C和C++,但不能提升.

编辑:"效率"是指时间效率:最短的执行时间.

c c++ binary hex decimal

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

ffmpeg ecplise调试

我在我的应用程序(Ubuntu)中使用ffmpeg,以便能够更好地理解我希望能够通过它调试的工作方式,为此,在编译时我使用以下'./configure'选项:

  • - 禁用剥离
  • --enable调试= 3
  • --extra-CFLAGS = " - gstabs +"

有了这个设置,我能够通过调试器(gdb)逐步执行'ffmpeg',但是,我无法评估任何变量,只有代码位置是可解析的...

我做错了什么?为什么我不能评估变量?

任何帮助将不胜感激.

c++ gdb ffmpeg

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

enum-int casting:运算符或函数

在我使用的外部代码中有枚举:

enum En {VALUE_A, VALUE_B, VALUE_C};
Run Code Online (Sandbox Code Playgroud)

在我使用的另一个外部代码中有3个#define指令:

#define ValA 5
#define ValB 6
#define ValC 7
Run Code Online (Sandbox Code Playgroud)

很多时候我的int X等于ValA或ValB或ValC,我必须将其转换为相应的En值(ValA到VALUE_A,ValB到VALUEB等),因为某些函数签名具有enum En.很多时候我必须做相反的操作,将enum En翻译成ValA或ValB或ValC.我不能改变这些函数的签名,并且有很多这样的函数.

问题是:如何进行翻译?我应该创建2个强制使用的强制转换操作符吗?或者我应该只有2个明确使用的翻译函数:

En ToEn(int)
int FromEn(En)
Run Code Online (Sandbox Code Playgroud)

或任何其他解决方案?

c++ enums casting

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

参考STL地图元素的值?

是否可以传递函数对map元素的值的引用,并在那里修改它?

foo(string & s)
{
    s = "xyz";
}

map<int, string> m;
m[1] = "abc";
foo(m[1]); // <-- Is it ok? Will m[1] be "xyz" after this call?
Run Code Online (Sandbox Code Playgroud)

谢谢.

c++ stl map

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

如何在Perl 5.004下增强Perl/TK GUI的外观?

我有一个应用程序,可以在使用Perl/TKGUI的Windows,Linux和Solaris上运行.由于条件的限制,我们只限于学习Perl/TK .而且,我们仅限于旧Perl/Tk版本5.00404.

我想在这些限制内工作,使GUI看起来尽可能美观和现代.

是否有任何网络资源具有传统知识设计方案(按钮,框架,颜色等),可以帮助我完成这项工作?


我也在寻找像我在这里找到的现代化建议:

如果您发现您的Tk应用程序在基于X的系统上看起来有点难看,请尝试在脚本顶部添加以下行:

$mw->optionAdd("*font", "-*-arial-normal-r-*-*-*-120-*-*-*-*-*-*");
$mw->optionAdd("*borderWidth", 1);
Run Code Online (Sandbox Code Playgroud)

perl user-interface tk-toolkit perltk

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

如何在C++中重写后调用原始函数?

我用两个函数read()和write()来序列化我的大多数类.我想要做的是从子类调用基类的read/write()函数,这样我就不必多次重复序列化代码了.

例如:

class Base
{
public:
   base();
   virtual read(QDataStream&);
   virtual write(QDataStream&);
private:
   int a, b, c, d;
}

class Sub : public Base
{
public:
    Sub();
    read(QDataStream&);
    write(QDataStream&);
private:
    int e, f, g, h;
}
Run Code Online (Sandbox Code Playgroud)

所以在这个例子中,我希望代码读/写a,b,c,d来自Base.然后,Sub将调用Base :: read(QDataStream&),然后添加Sub独有的任何属性.这样我就不必为每个子类重复序列化代码(并且可能忘记这样做).

c++ qt overriding

8
推荐指数
3
解决办法
7374
查看次数

如何从QDialog返回数据?

我正在尝试设计一个主窗口和一个QDialog,并找到从a返回数据的最佳方法QDialog.

现在我正在捕捉accepted()来自对话框的信号,之后我调用了返回数据的对话框函数.有没有更好的方法?

这是我现在的工作代码:

class MainWindow : public QMainWindow
{
// ...

public slots:
    void showDialog()
    {
        if (!myDialog)
        {
            myDialog = new Dialog();
            connect(myDialog, SIGNAL(accepted()), this, SLOT(GetDialogOutput()));
        }
        myDialog->show();
    }
    void GetDialogOutput()
    {
        bool Opt1, Opt2, Opt3;
        myDialog->GetOptions(Opt1, Opt2, Opt3);
        DoSomethingWithThoseBooleans (Opt1, Opt2, Opt3);
    }

private:
    void DoSomethingWithThoseBooleans (bool Opt1, bool Opt2, bool Opt3);
    Dialog * myDialog;

};
Run Code Online (Sandbox Code Playgroud)

对话:

class Dialog : public QDialog
{
// ...

public:
    void GetOptions (bool & Opt1, bool & Opt2, …
Run Code Online (Sandbox Code Playgroud)

c++ oop qt qdialog

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

寻找算法(二维二分搜索的版本)

容易出问题和已知算法:

我有一个拥有100名成员的大阵容.前X个成员为0,其余为1.查找X.

我通过二分搜索来解决它:检查成员50,如果它是0 - 检查成员75等,直到我找到相邻的0和1.

我正在寻找一个针对二维相同问题的优化算法:

我有二维数组100*100.在0-X行和0-Y列上的那些成员是0,其余的是1.如何找到Y和X?

algorithm binary-search

7
推荐指数
3
解决办法
2870
查看次数