小编Gab*_*les的帖子

在"打开资源"对话框中键入时,有没有办法按目录而不是文件名查找文件?

我一直在使用Ctrl+ Shift+来查找和打开Eclipse项目中的文件.但有时我知道我的文件所在的目录(或其中的一部分),但我不知道他们的名字.

在进行搜索时,似乎只考虑文件的名称,而不是它们的路径.我希望能够通过路径优化搜索.

例如,如果我有一个包含3个文件的文件夹X,我希望输入X会显示3个文件,所以我可以选择它们.或者它实际上让我选择X文件夹本身!

有没有办法在Eclipse中执行此操作?

eclipse ide

13
推荐指数
1
解决办法
1632
查看次数

如何从字节对象中删除双反斜杠(`\\`)?

例如:

t = str.encode(msg)

print(t)
Run Code Online (Sandbox Code Playgroud)

我收到双斜杠,如下所示:

b'\\xda\\xad\\x94\\xb4\\x0bg\\x92]R\\x9a1y\\x9d\\xed\\x04\\xd5\\x8e+\\x07\\xf8\\x03\\x1bm\\xd6\\x96\\x10\\xca80\\xe26\\x8a
Run Code Online (Sandbox Code Playgroud)

但是,我想得到的结果是:

b'\xda\xad\x94\xb4\x0bg\x92]R\x9a1y\x9d\xed\x04\xd5\x8e+\x07\xf8\x03\x1bm\xd6\x96\x10\xca80\xe26\x8a'
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

python byte backslash

11
推荐指数
2
解决办法
9813
查看次数

什么是弱函数,它们的用途是什么?我正在使用 stm32f429 微控制器

维基百科说:

弱符号表示在链接可执行和可链接格式 (ELF) 目标文件期间的特殊注释符号。默认情况下,没有任何注释,目标文件中的符号是强符号。在链接期间,强符号可以覆盖同名的弱符号。相比之下,共享名称的两个强符号在链接时会产生链接错误。链接二进制可执行文件时,弱声明的符号不需要定义。相比之下,(默认情况下)没有定义的声明强符号会触发未定义符号链接错误。C或C++语言标准没有提到弱符号;因此,将它们插入代码不是很便携。即使两个平台支持将符号标记为弱的相同或相似的语法,语义也可能在细微之处有所不同,例如

什么是弱函数,它们的用途是什么?我正在使用 stm32f429 微控制器。库中有一些弱函数。但我无法理解,它们是什么以及它们的用途!

我在谷歌上搜索了它,但没有得到满意的答案。

c stm32f4discovery stm32ldiscovery stm32f4

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

YAML 与 Python 配置/参数文件(也可能是 JSON 与 XML)

我发现 Python 过去常常为 C/C++ 头文件和源文件生成大量代码。通常,存储参数的输入文件是 JSON 或 YAML 格式,尽管我看到的大部分都是 YAML。但是,为什么不直接使用Python文件呢?在这种情况下为什么要使用 YAML?

这也让我开始思考:由于 Python 是一种脚本语言,因此当它的文件仅包含数据和数据结构时,实际上可以像 XML、JSON、YAML 等一样使用。人们会这样做吗?它有一个好的用例吗?

如果我想将配置文件导入到 C 或 C++ 程序中怎么办?那么进入 Python 程序呢?在 Python 的情况下,在我看来,使用 YAML 根本没有任何意义,因为您可以将配置参数和变量存储在纯 Python 文件中。在 C 或 C++ 情况下,在我看来,您仍然可以将数据存储在 Python 文件中,然后只需导入一个 Python 脚本,并在构建过程中自动生成头文件和源文件。同样,在这种情况下也许根本不需要 YAML 或 JSON。

想法?

以下是在 YAML 文件中存储一些嵌套键/值哈希表对的示例:

my_params.yml:

---
dict_key1:
    dict_key2:
        dict_key3a: my string message
        dict_key3b: another string message
Run Code Online (Sandbox Code Playgroud)

在纯 Python 文件中也有同样的事情:

my_params.py

data = {
    "dict_key1": {
        "dict_key2": {
            "dict_key3a": "my string message",
            "dict_key3b": "another string message",
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

读取 YAML …

python xml configuration json yaml

10
推荐指数
1
解决办法
5746
查看次数

编译器的“-O0”选项和“-Og”选项有什么区别?

当我想要调试 C 或 C++ 程序时,我被教导如何使用-O0关闭优化,并将-ggdb符号插入到可执行文件中,这些符号针对使用gdb我使用的 GNU 调试器进行了优化(或者,您可以-glldb使用LLVM/clang 的lldb调试器,或者只是-g用于一般调试符号,但这不会像-ggdb表面上那么好......)。然而,我最近偶然发现有人说使用-Og(而不是-O0),这让我措手不及。果然,它在man gcc!:

-Og优化调试体验。 -Og启用不干扰调试的优化。它应该是标准编辑-编译-调试周期的优化级别选择,提供合理的优化级别,同时保持快速编译和良好的调试体验。

那么,有什么区别呢?这是-O0来自的描述man gcc

-O0减少编译时间并使调试产生预期结果。这是默认设置。

man gcc不过,明确表示-Og“应该是标准编辑-编译-调试周期选择的优化级别”。

这听起来像是-O0真正的“没有优化”,而-Og“进行了一些优化,但只是那些不干扰调试的优化”。它是否正确?那么,我应该使用哪个,为什么?

有关的:

  1. 相关,但不重复!(仔细阅读,它根本不重复):-O0 、-O1 和 -g 之间有什么区别
  2. 我对--copt=与 Bazel 一起使用的调试设置的回答:gdb:当前上下文中没有符号“i”

c c++ debugging gdb compiler-optimization

10
推荐指数
1
解决办法
5379
查看次数

64 位计算机上的哪些类型在 gnu C 和 gnu C++ 中自然是原子的?-- 意味着它们具有原子读取和原子写入

注意:对于这个问题,我不是在谈论 C 或 C++语言标准。相反,我谈论的是针对特定体系结构的 gcc 编译器实现,因为语言标准对原子性的唯一保证是使用_AtomicC11 或更高版本中的类型或std::atomic<>C++11 或更高版本中的类型。另请参阅我在这个问题底部的更新。

在任何体系结构上,某些数据类型可以原子方式读取和写入,而其他数据类型则需要多个时钟周期,并且可能在操作中间被中断,如果跨线程共享该数据,则会导致损坏。

8 位单核 AVR 微控制器(例如:Arduino Uno、Nano 或 Mini 使用的 ATmega328 mcu)上,只有8 位数据类型具有原子读取和写入(使用 gcc 编译器和gnu C 或gnu C++语言)。我在不到 2 天的时间里进行了 25 小时的马拉松式调试,然后在这里写下了这个答案。另请参阅此问题的底部以获取更多信息。以及有关使用 AVR-libc 库的 gcc 编译器编译时 AVR 8 位微控制器具有自然原子写入和自然原子读取的 8 位变量的文档。

(32 位)STM32 单核微控制器上,任何32 位或更小的数据类型绝对自动是原子的(当使用 gcc 编译器和 gnu C 或 gnu C++ 语言编译时,因为ISO C 和 C++ 不保证这一点直到 2011 年版本,_Atomic类型为 C11 …

c c++ gcc x86-64 atomic

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

在 STM32 微控制器中禁用和重新启用中断以实现原子访问防护的各种方法有哪些?

通过“原子访问防护”或“中断防护”强制对与 ISR 共享的易失性变量进行原子访问的标准技术,特别是在没有操作系统的情况下运行裸机、单线程协作多任务应用程序时,如下所示:

// 1. save interrupt state
// 2. disable only the interrupts necessary

// You get atomic access to volatile variables shared with ISRs here,
// since ISRs are the only other "context" or running "thread" which
// might attempt to modify a shared memory block or variable.

// 3. restore interrupt state
Run Code Online (Sandbox Code Playgroud)

另请参阅我在这里详细描述的地方,包括最佳实践(在短时间内保持中断关闭)以及如何通过我的doAtomicRead()重复读取循环函数进行原子读取而不首先禁用中断:读取 64 位变量,即由 ISR 更新

我之前已经记录过如何对 AVR 微控制器/Arduino 执行此操作:How do I Forceatomity in Atmel AVR mcus/Arduino? …

c atomic interrupt stm32 isr

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

google mock - 怎么说“必须使用某个参数调用一次函数,但可以使用不同的参数调用多次”?

我需要检测给定的函数是否已使用一组特定的参数被精确调用一次。

EXPECT_CALL(Mock_Obj, func("abc")).Times(1)

但是可以使用不同的参数多次调用该函数。

我该如何表达?

c++ unit-testing googletest googlemock gmock

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

使用 STM32 和 FreeRTOS 时,“HAL_NVIC_SetPriority()”的有效值是什么?

在学习了有关中断优先级的一些知识之后,我仍然有点困惑,试图理解允许HAL_NVIC_SetPriority()SysTick_IRQn(每 1 毫秒调用 FreeRTOS 调度程序的 ISR)上调用什么值。

太长了;

我的一部分认为HAL_NVIC_SetPriority(SysTick_IRQn, 15 ,0U)(可能的最低优先级)和HAL_NVIC_SetPriority(SysTick_IRQn, 10 ,0U)(更高一点)之间的任何内容都是允许的,而我的一部分认为HAL_NVIC_SetPriority(SysTick_IRQn, 15 ,0U)(可能的最低优先级)和HAL_NVIC_SetPriority(SysTick_IRQn, 5 ,0U)(更高一点)之间的任何内容都是允许的。这是假设configLIBRARY_MAX_SYSCALL_INTERRUPT_PRIORITY在 FreeRTOSConfig.h 中设置为 5。令人困惑的是,在 FreeRTOS 中,数字越大优先级越高,但在 STM32 中,数字越高优先级越低,并且文档非常难以理解。


细节:

为了证明我已经做出了勇敢的努力,也为了帮助大家帮我填补空白,以下是我目前的理解。我将以这样一种方式写下我所知道的真实情况的描述,看起来像是在教,尽管我正在寻求上述问题的答案,以及 更正确认补充您认为合适的洞察力。

尽管这可能适用于许多 STM32 微控制器或系列,但让我们特别针对 STM32F207ZG 进行讨论

注意:STM32CubeF2下载在这里

我的理解:

如果您查看标准FreeRTOSConfig.h文件(例如:STM32Cube_FW_F2_V1.7.0/Projects/STM322xG_EVAL/Applications/FreeRTOS/FreeRTOS_ThreadCreation/Inc/FreeRTOSConfig.h),您将看到以下内容:

/* Cortex-M specific definitions. */
#ifdef __NVIC_PRIO_BITS
    /* __BVIC_PRIO_BITS will be specified when CMSIS is …
Run Code Online (Sandbox Code Playgroud)

c stm32 freertos

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

Pdf2Image 库无法读取使用 DocuSign 签名的 pdf

我正在尝试将使用 DocuSign 签名的 pdf 转换为图像格式。我们在 Convert_from_path 方法中遇到错误。代码及错误如下所示:

import pdf2image

data=pdf2image.convert_from_path('name.pdf')

PDFPageCountError: Unable to get page count.
Syntax Error: Gen inside xref table too large (bigger than INT_MAX)
Syntax Error: Couldn't find trailer dictionary
Syntax Error: Invalid XRef entry
Syntax Error: Invalid XRef entry
Syntax Error: Top-level pages object is wrong type (null)
Command Line Error: Wrong page range given: the first page (1) can not be after the last page (0).
Run Code Online (Sandbox Code Playgroud)

poppler docusignapi pdftoppm

8
推荐指数
2
解决办法
5306
查看次数