当我查看GCC生成的汇编代码时,有许多行开头.LBB
和一个数字.似乎它们不是操作指令.更像是标记文件的内容或什么.
是什么.LFB
,.LVL
,LBB
,LBE
等是在编译器生成的汇编代码?
.loc是否意味着"代码行".那些线条只是表明了symbol table
吗?
这是一段代码,
main:
.LFB1:
.loc 1 8 0
.cfi_startproc
.LVL2:
.LBB4:
.LBB5:
.loc 1 2 0
movsd b(%rip), %xmm0
.LBE5:
.LBE4:
.loc 1 10 0
xorl %eax, %eax
.LBB7:
.LBB6:
.loc 1 2 0
mulsd a(%rip), %xmm0
.LBE6:
.LBE7:
.loc 1 9 0
movsd %xmm0, a(%rip)
.LVL3:
.loc 1 10 0
ret
.cfi_endproc
Run Code Online (Sandbox Code Playgroud) 我知道该函数不允许更改对象的状态,但我想我在某处读过允许编译器假设如果使用相同的参数调用函数,它将返回相同的值,因此可以重用缓存值(如果可用).例如
class object
{
int get_value(int n) const
{
...
}
...
object x;
int a = x.get_value(1);
...
int b = x.get_value(1);
Run Code Online (Sandbox Code Playgroud)
然后编译器可以优化第二个调用,并使用寄存器中的值或只是执行 b = a;
这是真的?
有一段时间你会得到一个错误报告,通常来自质量保证的新人,他们可能还没有完全理解该产品,这会让你挑起眉毛.
我会从一个我的团队(发展和QA)在它发生几年后仍然笑的开始.
我正在处理的产品有一个带有一组按钮的工具栏,可以切换应用程序状态的某些方面.我收到了一个错误报告,其中说"当你按下按钮[x]时,它会卡住.你必须再次推它才能让它脱落."
class Temp {
public :
Temp(X& x): x_(x) {}
Temp(X& x, Y& y) : x_(x), y_(y) {}
...
private:
X& x_;
Y& y_;
}
Run Code Online (Sandbox Code Playgroud)
我得到了错误,因为如果Temp(X& x): x_(x)
引用y_
没有初始化.正确编写这样一个类的常见做法是什么?
我尝试使用py2exe打包一个Twisted程序,但是一旦我运行了我构建的exe文件,我就得到了一个"No module named resource"错误.
我发现py2exe说:
以下模块似乎缺失['FCNTL','OpenSSL','email.Generator','email.Iterators','email.Utils','pkg_resources','pywintypes','resource','win32api', 'win32con','win32event','win32file','win32pipe','win32process','win32security']
那么我该如何解决这个问题呢?
谢谢.
我想发送邮件而不用打扰用于传递的SMTP服务器.
所以JavaMail API对我不起作用,因为我必须指定要连接的SMTP服务器.
我希望图书馆通过查询邮件地址域的MX记录,自行查找哪个SMTP服务器负责哪个电子邮件地址.
我正在寻找像阿司匹林这样的东西.不幸的是我不能使用Aspirin本身,因为开发已经停止了2004,并且库无法正确地与现代垃圾邮件强化服务器通信.
詹姆斯的可嵌入版本可以完成任务.但我还没有找到关于这是否可行的文件.
或者有没有人知道我可以使用的其他库?
我有一堆遗留代码,我需要编写单元测试.它在任何地方使用预编译的头文件,因此几乎所有.cpp文件都依赖于stdafx.h,这使得为了编写测试而难以破坏依赖性.
我的第一直觉是删除所有这些stdafx.h文件,这些文件大部分都包含#include指令,并根据需要将这些#includes直接放在源文件中.
这将使得必须关闭预编译的头文件,因为它们依赖于像stdafx.h这样的文件来确定预编译头文件的停止位置.
有没有办法保留没有stdafx.h依赖项的预编译头文件?有没有更好的方法来解决这个问题?
任何人都可以建议一种从字符串中剥离制表符("\ t")的方法吗?CString或std :: string.
例如,"1E10"变为"1E10".
谢谢你的期待.
我有一个包含只读配置的大约10个项目的解决方案.它们是Web应用程序,Windows服务,控制台应用程序等.除了一个项目之外的所有项目都在同一台服务器上.每个项目都有3个环境 - 开发,测试和生产.所以有30种不同的配置,每种配置都有相当多的设置.在每个应用程序和环境中保持配置一致是很麻烦的.
我注意到大多数配置在每个项目中都很常见,所以我认为以某种方式集中配置会很好.我在某处读到WCF服务可能是一个很好的方法.我想也许包含硬编码静态类的库可能实际上工作正常 - 尽管必须编译以更改配置.理想情况下,配置应该来自实际的.config文件.
您将如何集中管理多个项目的配置?
我很惊讶地发现在VC++ 10中,您可以使用typedef来更改类的构造函数的名称:
#include <iostream>
using namespace std;
class A
{
private:
typedef A alias;
public:
alias() { cout << "A ctor" << endl; }
};
int main()
{
A(); // prints "A ctor"
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是标准的C++还是Microsoft扩展?