有时候拿到一个库文件,可能会编译出错,遇到uses VFP register arguments 'xxx' does not的情况,表明我们使用的浮点参数和库文件所用的浮点参数不一致。 浮点运算理解 我们经常在IDE工具Build选项中可以看到硬件浮点和软件浮点。 硬件浮点(hard-float) 编译器将代码直接编译成硬件浮点协处理器(浮点运算单元FPU)能识别的指令,这些指令在执行的时候
在C语言中,#和##是两个重要的预处理器操作符,它们在宏定义中发挥着关键作用: 1 操作符(字符串化操作符): 操作符用于将宏参数转换为字符串常量。在宏定义中,当参数前面加上#时,预处理器会将参数转换为一个字符串。这对于生成调试信息、日志消息或者动态构建字符串是非常有用的。 例如: #define STR(x) #x printf("%s\n", STR(Hello
1 CGO方式 (MinGW) 1.1 创建 example.cpp 和 example.h #include <iostream> extern "C" { __declspec(dllexport) void HelloWorld() { std::cout << "Hello from C++ DLL!"
原项目工程采用ARMCC工具链,由于涉及GCC库的问题,改用GCC工具,然而出现了很多前多未有的问题存在,任务堆栈溢出、内存越界等。sscanf导致内存越界也是其中一个。 --wrap=symbol 对symbol进行封装,对symbol的任意定义引用将被解析为__wrap_symbol。__real_对symbol的任何未定义引用解析为symbol。这可用于为系统函数提供封装器。封装函数应该为_
可重入和不可重入函数 不可重入函数 在实时系统的设计中,经常会出现多个任务调用同一个函数的情况。如果有一个函数不幸被设计成为这样:那么不同任务调用这个函数时可能修改其他任务调用这个函数的数据,从而导致不可预料的后果。这样的函数是不安全的函数,也叫不可重入函数。 可重入函数 肯定有一个安全的函数,这个安全的函数又叫可重入函数。那么什么是可重入函数呢?所谓可重入是指一个可以被多个任务调用的过程
不想要字节对齐的时候,有没有办法取消字节对齐?答案是可以,就是在结构体声明当中,加上__attribute__ ((packed))关键字,它可以做到让我们的结构体,按照紧凑排列的方式,占用内存。 来段实际代码: #include <stdio.h> #include <iostream> using namespace std; struct test1 {
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号