VS v010将以下C++代码缩进为:
if (Foo(arg1,
arg2))
{
}
Run Code Online (Sandbox Code Playgroud)
有没有办法更改VS格式规则以缩进代码如下:
if (Foo(arg1,
arg2))
{
}
Run Code Online (Sandbox Code Playgroud)
谢谢
更新
为什么这些缺点?难道你不觉得代码风格很重要还是有其他原因?
我有一些链接问题.
为了研究这个问题,我添加了-t linker flag(gcc -Wl,-t)来打印使用哪些库以及使用静态库中的哪些对象.
有一个静态库,在某些配置中使用一组目标文件,而在另一组配置中使用.
是否有任何方法(可能是ld标志)看到为什么特定对象(在目标文件中定义了什么以前未定义的符号)被链接到二进制和其他来自相同的静态库不是?
在我的位置,我们有一个很大的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头文件?
谢谢德米特里
我试图弄清楚浏览信息(.sbr
文件)的用途,但只查找引用如何创建它.那有什么用呢?
谢谢迪马
鉴于:
问题:
谢谢
我是加密的新手.
在公钥加密中,我们有一对密钥 - 一个用于加密,一个用于解密.
如果Alice希望Bob发送她的秘密消息,她会发布她的加密密钥(它将被称为公钥)并保密解密密钥(它将被称为私钥).Bob使用Alice公钥加密消息,Alice使用她的私钥解密Bob的消息.
直到现在我认为我们都同意.
现在让我们看看签名会发生什么.Alice希望向Bob发送消息并签名以证明Bob拥有她的Alice所拥有的消息.签名旨在解决身份验证问题.使用公钥加密,签名是用Alice私钥加密消息(例如校验和)消息,并由Bob用Alice公钥解密.由于只有Alice知道它的私钥,因此Bob可以确定该消息来自Alice.
该如何签名解释在这里:
诸如RSA之类的一些非对称算法(公钥算法)允许该过程也在相反的方向上工作:消息可以用私钥加密并用相应的公钥解密.如果收件人想要使用Bob的公钥解密邮件,他/她必须知道该邮件来自Bob,因为没有其他人拥有发件人的私钥.数字签名以这种方式工作.
我很困惑的是Alice用于加密签名的私钥是什么?因此,签名我们使用:
在向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修复警告.
我使用的代码包含一组模块,编译到各个库.反过来,库以不同的组合链接以构建不同的二进制文件.
所以,这是非常有序的.
不同的模块使用不同的命令行参数,我想使用Boost.Program_options进行解析.
由于命令行参数集取决于哪些库链接在一起,我事先并不知道所有参数,因此无法将它们添加到program_options :: options_description.
如何让每个模块添加命令行参数并稍后读取它们?
谢谢
我有以下宏:
#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
"吃"其他块.
有没有办法强制用户代码不编译没有卷曲刹车或有其他定义宏来实现安全?
c++ ×4
gcc ×3
compilation ×2
linux ×2
autotools ×1
c ×1
cryptography ×1
debugging ×1
dependencies ×1
ld ×1
linker ×1
macros ×1
makefile ×1
visual-c++ ×1