-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位用于那些和更新的工具链.
我想查看dynamic_cast的结果.在c ++ 11(或c ++ 0x,对于支持nullptr的编译器),我应该与nullptr或0进行比较吗?
这有关系,如果是的话,为什么?
结果是编译器依赖的吗?
我想捕获,解码和查看Cortex-M4 MCU(在我的例子中是Atmel SAM4S)的ITM跟踪信息.特别是,我想捕获与我板上其他信号相关的异常和用户跟踪数据(即在同一时间线上显示所有信号和跟踪信息).
我在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它并自动设置它?
这是这个问题的反面。
我在 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 中正确解除分配?
所以我有这两个文件。
测试广告
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) 当我尝试在 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 ) 上所示?