小编Cap*_*ack的帖子

Visual Studio 2015如何在if语句之后快速将现有代码移动到新放置的花括号中?

所以,如果我有这样的事情:

 if (a>b)
      return true;
Run Code Online (Sandbox Code Playgroud)

我后来决定将其更改为:

if (a>b)
{
     a++;
     return true;
}
Run Code Online (Sandbox Code Playgroud)

是否有更快的方法让if语句下的现有代码直接进入新制作的花括号?因为目前如果我在第一个例子中创建if语句后添加大括号,我必须从新大括号下剪切"return true"并将其粘贴到新制作的花括号之间.这就是它的样子:

if (a>b)
{
}
return true;
Run Code Online (Sandbox Code Playgroud)

这很烦人 是否有解决方法或我们是否必须手动复制并粘贴括号之间的现有行?

PS我正在使用Microsoft Visual Studio 2015 ver 3并使用c#编程,但我认为这个问题也出现在其他语言中,就像c ++一样.

c# curly-braces visual-studio visual-studio-2015

5
推荐指数
1
解决办法
161
查看次数

为什么 ROM 的闪存扇区在起始地址处较小?

最近经常使用闪存 ROM,我发现在芯片的内部闪存以及外部 SPI 闪存设备中,扇区的大小通常都是这样的:

STM32F405/415 的闪存布局

我很好奇为什么起始地址空间的扇区比后面的地址小。我怀疑使用引导加载程序之类的东西会更方便。由于引导加载程序通常小于 128k,因此这将允许引导加载程序写入前 2 或 3 个扇区。这使得主空间应用程序有更多的扩展空间,因为要对其进行编程,我们需要从新扇区的开头开始。如果我们只有 128k 大小的扇区,那么我们基本上就会浪费128k - bootloader_size空间。

我的怀疑正确吗?或者这样做还有其他原因吗?真的很想知道这里的设计决策是什么。

embedded firmware flash-memory bootloader rom

5
推荐指数
1
解决办法
318
查看次数

为什么我们在这里将0添加到双无效指针?

对于上下文,这是从引导加载程序调用的代码,该引导加载程序应引导到主应用程序中。该代码段来自带有参数的函数,该参数uintptr_t address指定了写入主应用程序的地址。我相信sppc分别是堆栈指针和程序计数器。

这是代码:

sp = *((void **)address + 0);
pc = *((void **)address + 1);
start_new_application(sp, pc);
Run Code Online (Sandbox Code Playgroud)

这里的完整上下文

然后我走了,打印了地址,sp和pc,发现了以下内容:

address -> 0x08010000
sp ------> 0x20050000
pc ------> 0x080132DD
Run Code Online (Sandbox Code Playgroud)

这让我很困惑。我不确定为什么该sp行中有一个+ 0。该sp行可以改写为:

sp = (void *)address;
Run Code Online (Sandbox Code Playgroud)

并做同样的事情?

我的理解是,该地址已被static_casted为一个double void指针,然后sp被赋予地址的解除引用值(0x08010000),并pc已被赋予地址的解除引用值(0x08010001)。然后,在我的printf语句中,显示的这些值是这些地址的取消引用的值。

我的理解在这里正确吗?

c++ embedded pointers program-counter stack-pointer

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

如果声明什么都不做,如何弄清楚简洁

如果我有:

logicBeingTested.isItTrue ? (doSomeStuffIfItsTrue) : (doSomeNothingIfFalse);
Run Code Online (Sandbox Code Playgroud)

如果我的论证是真的,我怎么做到这一点只会做那个陈述的真正的一半而不是假的.我试过这样做:

logicBeingTested.isItTrue ? (status = true) : ();
Run Code Online (Sandbox Code Playgroud)

但这不起作用.我知道我可以通过做一个if语句来解决这个问题,但出于好奇心的缘故,可以给出一个对论证无所作为的答案吗?

编辑:我对OP的bool值"状态"有点误导,我在新编辑中澄清了我想要的内容

c# if-statement

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