小编rya*_*n_s的帖子

链接上的未定义符号___gxx_personality_v0

我用这个命令行得到了这个未定义的符号构建:

$ gcc test.cpp
Undefined symbols:
  "___gxx_personality_v0", referenced from:
  etc...
Run Code Online (Sandbox Code Playgroud)

test.cpp很简单,应该很好.这笔交易是什么?

c c++ gcc g++

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

如何最好地复制MS SQL Server中的整个数据库?

我需要从一台服务器复制大约40个数据库到另一台服务器.新数据库应具有新名称,但与原始数据库具有相同的表,数据和索引.到目前为止我一直在:

1)创建每个目标数据库
2)使用" 任务 - >导出数据 "命令分别为每个数据库创建和填充表
3)使用SQL脚本重建每个数据库的所有索引

每个数据库只有三个步骤,但我敢打赌,这是一种更简单的方法.有任何MS SQL Server专家有什么建议吗?

database sql-server

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

C编译器可以重新排列堆栈变量吗?

我曾经在嵌入式系统的项目上工作过,我们重新安排了堆栈变量声明的顺序,以减少生成的可执行文件的大小.例如,如果我们有:

void func()
{
    char c;
    int i;
    short s;
    ...
}
Run Code Online (Sandbox Code Playgroud)

我们会将此重新排序为:

void func()
{
    int i;
    short s;
    char c;
    ...
}
Run Code Online (Sandbox Code Playgroud)

由于对齐问题,第一个导致使用12个字节的堆栈空间,第二个导致仅8个字节.

这是C编译器的标准行为,还是我们使用的编译器的缺点?

在我看来,编译器应该能够重新排序堆栈变量,以便在需要时支持更小的可执行文件大小.有人向我建议,C标准的某些方面可以防止这种情况,但我无法以任何方式找到信誉良好的来源.

作为一个额外的问题,这也适用于C++编译器吗?

编辑

如果答案是肯定的,那么C/C++编译器可以重新排列堆栈变量,你能给出一个肯定会这样做的编译器的例子吗?我想看看编译器文档或类似的东西支持这一点.

再次编辑

谢谢大家的帮助.对于文档,我能够找到的最好的东西是GCC(pdf)中的最佳堆栈槽分配,由Naveen Sharma和Sanjiv Kumar Gupta撰写,于2003年在海湾合作委员会峰会会议上提交.

这里讨论的项目是使用ADS编译器进行ARM开发.在该编译器的文档中提到,像我所示的排序声明可以提高性能以及堆栈大小,因为ARM-Thumb架构如何计算本地堆栈帧中的地址.该编译器没有自动重新排列本地人以利用这一点.这里链接的论文说,截至2003年,GCC也没有重新安排堆栈帧以改善ARM-Thumb处理器的参考局部性,但它暗示你可以.

我找不到任何明确表示这在GCC中实施过的东西,但我认为这篇论文可以证明你是正确的.再次感谢.

c c++ compiler-construction callstack alignment

15
推荐指数
5
解决办法
4641
查看次数

MFC"警告:跳过组中的非单选按钮."

在Visual Studio的调试器中运行旧的MFC应用程序时,我在"输出"窗口中看到了很多警告,如下所示:

警告:跳过组中的非单选按钮.

据我所知,在MFC中,您可以将单选按钮分组,以指示哪些单选按钮组合在一起.如果我没记错的话,你可以通过将第一个单选按钮的"group"属性设置为true来执行此操作,然后将其余的单选按钮"group"属性设置为false.

关于这个警告,我有三个问题.

  1. 你怎么摆脱这个警告?您是否必须将所有非单选按钮控件的"group"属性设置为true以避免这种情况,或者您是否应该将其设置为最后一个单选按钮后的第一个控件?

  2. 有没有一种简单的方法来确定哪些控件或对话框有这个问题?我可以打开每个对话框,然后摆弄它,直到弹出警告.这个应用程序有很多对话框,所以如果有一个更简单的方法会很好.

  3. 如果您不修复此警告,可能会出现什么负面行为?换句话说,这甚至不重要吗?

mfc warnings visual-studio

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