小编Pat*_*ick的帖子

为什么gcc会长时间发出警告?

-Wlong-longgcc警告的原因是什么?

从gcc手册页:

-Wlong-long
       Warn if long long type is used.  This is enabled by either -Wpedantic or -Wtraditional in ISO C90 and C++98 modes.  To inhibit the warning messages, use -Wno-long-long.
Run Code Online (Sandbox Code Playgroud)

据我了解,long long要求至少为64位(实际上它总是64位,至少与今天的编译器一样).这不是ISO C90或C++ 98的情况,还是有其他原因不使用long long

我知道<stdint.h>类型int64_t和朋友的类型,但一些不太老的编译器(例如VS2005和Green Hills ARM 3.5)不提供<stdint.h>,我认为long long(至少)64位用于那些和更新的工具链.

c c++ gcc types gcc-warning

32
推荐指数
1
解决办法
5086
查看次数

在c ++ 11中,dynamic_cast是返回nullptr还是0?

我想查看dynamic_cast的结果.在c ++ 11(或c ++ 0x,对于支持nullptr的编译器),我应该与nullptr或0进行比较吗?

这有关系,如果是的话,为什么?

结果是编译器依赖的吗?

dynamic-cast nullptr c++11

6
推荐指数
2
解决办法
5533
查看次数

如何在Cortex-M4 MCU上捕获和查看ITM跟踪信息?

我想捕获,解码和查看Cortex-M4 MCU(在我的例子中是Atmel SAM4S)的ITM跟踪信息.特别是,我想捕获与我板上其他信号相关的异常和用户跟踪数据(即在同一时间线上显示所有信号和跟踪信息).

embedded

6
推荐指数
2
解决办法
1719
查看次数

如何使用JLink和Cortex M4从gdb设置堆栈指针?

我在Linux上使用带有gdb的Segger J-Link Base来调试Atmel SAM4S8C MCU.我在gdb命令文件中有以下内容,我--command在启动gdb时使用参数指定:

target remote localhost:2331
monitor flash device SAM4S8C
Run Code Online (Sandbox Code Playgroud)

我还在load命令文件中指定了我的ELF文件和程序.

我注意到当我加载程序(使用load)时,堆栈指针没有正确设置. monitor reset也不会修改堆栈指针.

的J-Link用户指南说(用于Cortex-M3设备):

此外,用户必须在复位后手动校正堆栈指针(R13)和PC(R15)以调试应用程序.

从gdb执行此操作的命令是什么?

奇怪的是,我必须手动完成这项工作.堆栈指针是复位向量的第一个条目.在我开发代码时,初始堆栈指针会发生变化(特别是在具有非常不同的初始堆栈指针的应用程序之间切换,这是我第一次注意到这一点).

有没有办法让gdb在ELF文件中读取load它并自动设置它?

embedded gdb arm

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

如何将在 C 中分配的字符串返回给 Ada 并在 Ada 中释放它?

这是这个问题的反面

我在 C 函数中分配了一个字符串(特别是由 cJSON 库),我想将它作为输出参数返回给 Ada 调用者,并从 Ada 中释放该字符串。

C 接口如下所示:

typedef struct
{
    int f1;
    int f2;
    // ...
} A;

int Dump_Record(const A& rec, char** outstr);
Run Code Online (Sandbox Code Playgroud)

Dump_Record函数将 outstr 设置为 返回的值cJSON_Print,它通过 分配一个字符串malloc

应如何指定 Ada 绑定以及如何检索输出字符串并在 Ada 中正确解除分配?

c ada

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

无法证明 Ada Spark 中看似微不足道的平等

所以我有这两个文件。

测试广告

package Testing with
   SPARK_Mode
is

   function InefficientEuler1Sum2 (N: Natural) return Natural;

   procedure LemmaForTesting with
     Ghost,
     Post => (InefficientEuler1Sum2(0) = 0);

end Testing;
Run Code Online (Sandbox Code Playgroud)

和测试.adb

package body Testing with
   SPARK_Mode
is

   function InefficientEuler1Sum2 (N: Natural) return Natural is
      Sum: Natural := 0;
   begin
      for I in 0..N loop
         if I mod 3 = 0 then
            Sum := Sum + I;
         end if;
         if I mod 5 = 0 then
            Sum := Sum + I;
         end if;
         if I mod 15 …
Run Code Online (Sandbox Code Playgroud)

ada

4
推荐指数
1
解决办法
146
查看次数

GNAT 社区版中没有 GNATtest?

当我尝试在 GNAT 2020 社区版(Windows 10 64 位)中生成单元测试时,出现缺少 gnattest 工具的错误:could not locate gnattest. 同样发生在 Ubuntu 20.04(在 WSL 中)和包 gnat-10: could not locate x86_64-linux-gnu-gnattest-10

GNATtest 不是 GNAT 2020 社区版的一部分,如 AdaCores 网站 ( https://www.adacore.com/gnatpro/comparison ) 上所示?

ada gnat

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

标签 统计

ada ×3

c ×2

embedded ×2

arm ×1

c++ ×1

c++11 ×1

dynamic-cast ×1

gcc ×1

gcc-warning ×1

gdb ×1

gnat ×1

nullptr ×1

types ×1