小编dim*_*mba的帖子

Visual Studio indentaion的函数参数

VS v010将以下C++代码缩进为:

 if (Foo(arg1,
     arg2))
 {
 }
Run Code Online (Sandbox Code Playgroud)

有没有办法更改VS格式规则以缩进代码如下:

 if (Foo(arg1,
         arg2))
 {
 }
Run Code Online (Sandbox Code Playgroud)

谢谢

更新

为什么这些缺点?难道你不觉得代码风格很重要还是有其他原因?

c c++ visual-studio-2010

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

gcc链接选项,以查看为什么某些目标文件链接到二进制文件

我有一些链接问题.

为了研究这个问题,我添加了-t linker flag(gcc -Wl,-t)来打印使用哪些库以及使用静态库中的哪些对象.

有一个静态库,在某些配置中使用一组目标文件,而在另一组配置中使用.

是否有任何方法(可能是ld标志)看到为什么特定对象(在目标文件中定义了什么以前未定义的符号)被链接到二进制和其他来自相同的静态库不是?

linux linker gcc compilation ld

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

头文件C++模块之间的依赖关系

在我的位置,我们有一个很大的C++代码库,我认为如何使用头文件存在问题.

Visual Studio项目很多,但问题出在概念上并且与VS无关.每个项目都是一个模块,执行特定的功能.每个项目/模块都编译为库或二进制文件.每个项目都有一个包含所有源文件的目录 - *.cpp和*.h.一些头文件是模块的API(我的意思是声明创建的库的API的头文件子集),有些是内部的.

现在解决这个问题 - 当模块A需要使用模块B时,A会添加B的源目录以包含搜索路径.因此,A在编译时可以看到所有B的模块内部头.

作为副作用,开发人员不必强调每个模块的确切API,我认为这是一个坏习惯.

我首先考虑了它应该如何应用.我想在每个项目中创建一个仅包含接口头文件的专用目录.希望使用该模块的客户端模块仅允许包含接口目录.

这种方法可以吗?你的位置如何解决问题?

UPD在我以前的地方,开发是在Linux上用g ++/gmake完成的,我们确实用来将API头文件安装到一个公共目录,这是一些建议的答案.现在我们使用cmake生成项目文件的Windows(Visual Studio)/ Linux(g ++)项目.我如何强制在Visual Studio中预先安装API头文件?

谢谢德米特里

c++ dependencies development-environment

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

Visual C++浏览信息

我试图弄清楚浏览信息(.sbr文件)的用途,但只查找引用如何创建它.那有什么用呢?

谢谢迪马

visual-studio visual-c++ browse-information

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

创建autotools构建源的调试版本

鉴于:

  • source tar.gz
  • AFAIK,configure确实支持调试构建(configure --help不显示--enable-debug)

问题:

  • 如果软件包的作者首先没有提供它,那么使用调试版本是否安全?
  • 如果pre.v问题的答案是肯定的,那么我是如何产生调试版本的?我应该修补configure.ac吗?

谢谢

makefile compilation autotools

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

数字签名公钥

我是加密的新手.

在公钥加密中,我们有一对密钥 - 一个用于加密,一个用于解密.

如果Alice希望Bob发送她的秘密消息,她会发布她的加密密钥(它将被称为公钥)并保密解密密钥(它将被称为私钥).Bob使用Alice公钥加密消息,Alice使用她的私钥解密Bob的消息.

直到现在我认为我们都同意.

现在让我们看看签名会发生什么.Alice希望向Bob发送消息并签名以证明Bob拥有她的Alice所拥有的消息.签名旨在解决身份验证问题.使用公钥加密,签名是用Alice私钥加密消息(例如校验和)消息,并由Bob用Alice公钥解密.由于只有Alice知道它的私钥,因此Bob可以确定该消息来自Alice.

该如何签名解释在这里:

诸如RSA之类的一些非对称算法(公钥算法)允许该过程也在相反的方向上工作:消息可以用私钥加密并用相应的公钥解密.如果收件人想要使用Bob的公钥解密邮件,他/她必须知道该邮件来自Bob,因为没有其他人拥有发件人的私钥.数字签名以这种方式工作.

我很困惑的是Alice用于加密签名的私钥是什么?因此,签名我们使用:

  1. 用于从Bob向Alice发送安全消息的同一组密钥,意味着Alice用于解密从Bob接收的消息的相同私钥可用于加密消息的摘要,由Alice发送回Bob或...
  2. 用于签署Alice消息的附加加密/解密密钥对,其中Alice发布该对的解密密钥.

cryptography public-key-encryption

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

gcc - 删除"在此函数中使用未初始化"警告

在向gcc(4.4.6)添加-O2 -Wall标志后清除代码.我在一些遗留代码中有很多警告.这是一个非常简化的版本来演示问题:

 1 #include <cstdio>
  2
  3 bool init(bool& a)
  4 {
  5     return true;
  6 }
  7
  8 int main()
  9 {
 10     bool a;
 11
 12     if (!init(a))
 13     {
 14         return 1;
 15     }
 16
 17     if (a)
 18     {
 19         printf("ok\n");
 20     }
 21 }
Run Code Online (Sandbox Code Playgroud)

当它编译为"gcc main.cpp -O2 -Wall"时,我收到:

 main.cpp:17: warning: `a' is used uninitialized in this function
Run Code Online (Sandbox Code Playgroud)

在实际代码中,init()仅在初始化"a"时才返回true,因此未初始化的"a"实际上没有使用它.

可以做Whan修复警告.

c++ linux gcc

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

gcc sanitizer:unmap_shadow_on_exit不支持自定义SIGSEGV处理程序

64位系统上的GCC清洁剂创建了大约17TB的巨大核心文件.

如果您需要用于死后分析的核心,您需要将以下选项传递给清洁剂:

  • unmap_shadow_on_exit = 1 - 取消巨大的内存,用于退出时的家务

  • disable_core = 0 - 在64位系统上创建核心文件

    但是,如果使用自己的信号处理程序处理SIGSEGV,则unmap_shadow_on_exit不起作用,并且会创建一个巨大的核心文件.

任何想法如何强制unmap_shadow_on_exit来完成它的工作?

debugging gcc memory-management

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

在模块化程序中使用Boost.Program_options

我使用的代码包含一组模块,编译到各个库.反过来,库以不同的组合链接以构建不同的二进制文件.

所以,这是非常有序的.

不同的模块使用不同的命令行参数,我想使用Boost.Program_options进行解析.

由于命令行参数集取决于哪些库链接在一起,我事先并不知道所有参数,因此无法将它们添加到program_options :: options_description.

如何让每个模块添加命令行参数并稍后读取它们?

谢谢

c++ boost-program-options

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

带有if语句的C预处理器

我有以下宏:

#define IF_TRACE_ENABLED(level)  if (IsTraceEnabled(level))
Run Code Online (Sandbox Code Playgroud)

用户代码应如下所示:

IF_TRACE_ENABLED(LEVEL1)
{
    ... some very smart code
}
Run Code Online (Sandbox Code Playgroud)

这里强调大括号 - 我想阻止"if"从宏到"吃掉"其他代码:

if (...)
   IF_TRACE_ENABLED(LEVEL1)
      printf(....);
else
   bla bla bla
Run Code Online (Sandbox Code Playgroud)

在这个例子中IF_TRACE_ENABLED"吃"其他块.

有没有办法强制用户代码不编译没有卷曲刹车或有其他定义宏来实现安全?

macros c-preprocessor

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