编程
文章平均质量分 70
05jin
嵌入式linux,stm32
展开
-
gdb调试
Ubuntu gdb 调试 过程 jin@ubuntu:~/jin/gdb$ gdb -vGNU gdb (Ubuntu/Linaro 7.4-2012.02-0ubuntu2) 7.4-2012.02Copyright (C) 2012 Free Software Foundation, Inc.License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>This is free soft原创 2022-03-03 00:34:50 · 574 阅读 · 0 评论 -
SQLite 接口API (C/C++)
SQLite -C/C++安装在 C/C++ 程序中使用 SQLite 之前,我们需要确保机器上已经有 SQLite 库。可以查看 SQLite 安装章节了解安装过程。C/C++ 接口 API以下是重要的 C&C++ / SQLite 接口程序,可以满足您在 C/C++ 程序中使用 SQLite 数据库的需求。如果您需要了解更多细节,请查看 SQLite 官方文档。序号 API & 描述 1 sqlite3_open(const char *filena.转载 2021-10-12 16:35:23 · 587 阅读 · 0 评论 -
C语言的变长参数 va_arg
void simple_va_fun(int i, ...) { va_list arg_ptr; char *s=NULL;va_start(arg_ptr, i); s=va_arg(arg_ptr, char*); va_end(arg_ptr); printf("%d %s\n", i, s); return原创 2017-04-08 15:26:56 · 1146 阅读 · 0 评论 -
循环文件读写
/************************************************************************************ * 文件名称:LoopFile.h * 循环文件控制结构 * * * * *************************************************************转载 2017-05-26 20:59:26 · 2529 阅读 · 0 评论 -
C语言如何获得精确到 毫秒 的时间
时间,在Linux系统可以使用time命令来计算程序运行运行所消耗的时间,能精确到毫秒,如果要精确到代码块或某个操作运行时所消耗的时间,time命令就不给力了。如果对时间的精度要求不高的话,可以调用标准C的接口time来得到开始和结束的时间,再调用difftime接口来计算时间差,精度是秒,代码如下所示:下载: time.c#include stdio.h>#inc转载 2017-05-19 17:40:30 · 11224 阅读 · 1 评论 -
#define中的#和##作用
#include #define paster( n ) printf( "token "#n" = %d\n ", token##n )int main() { int token9=10; paster(9); return 0; } #define语句中的#是把参数字符串化,##是连接两个参数成为一个整体。#d转载 2017-07-05 16:59:53 · 438 阅读 · 0 评论 -
tinyalsa使用
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/ivychend/article/details/78837187 tinyalsa使用 tinymix tinyplay tinycap tinymeminfo tinyalsa使用 tinyalsa源码位于android源码目录下external/ti...转载 2018-09-29 14:51:03 · 2003 阅读 · 0 评论 -
__FUNC__, __FILE__, __LINE__
1.public static String getMethodName() { StackTraceElement[] stacktrace = Thread.currentThread().getStackTrace(); StackTraceElement e = stacktrace[stacktrace.length-1]; return e.getMetho...转载 2018-11-27 09:04:04 · 355 阅读 · 0 评论 -
[C++] 前向声明(forward declaration)
1 前向声明只是一种“声明” 2 为什么前向声明在C++中是必要的 3 声明和定义之间的区别 4 前向声明能显著缩短编译链接时间 5 当两个定义互相使用对方时,打破循环。 6 另一个例子1 前向声明只是一种“声明”2 为什么前向声明在C++中是必要的编译器想要确定没有拼写错误,并且传递给函数的参数也是对的,因此编译器要求在调用任何函数之前,必须首先看到该函数的声明。...转载 2019-08-16 17:15:07 · 555 阅读 · 0 评论 -
QR_ENCODE_3.2 qrencode 二维码生成和识别
一:要生成二维码:方案一:sudo apt-get install qrencode方案二:1.下载源码http://www.oschina.net/p/libqrencode2.下载依赖库apt-get install libpng*apt-get install zlib*3.配置./configure./configure --without-tool原创 2016-04-22 17:33:20 · 4458 阅读 · 0 评论 -
c++调用c文件的函数
原创 2015-12-11 17:51:47 · 913 阅读 · 0 评论 -
文件操作
一.获取文件的大小1.fseek(fp, 0, SEEK_END);codeLen = ftell(fp);2.if ((length = lseek(fd, 0, SEEK_END)) < 0){ perror("lseek file failure!");}3.recelen = read(sockfd, recbuffer, sizeof(re原创 2015-05-26 14:45:04 · 319 阅读 · 0 评论 -
开发中遇到的问题(2015-06-01)
1.死循环循环升级,因为标志位的问题ERR:#这个标志是专门针对bike.tar的echo "1" > /usr/bike/conf/UpdataFlagls -l $tmppathtar -vxzf $tmppath/packet.tar.gz -C /code=$?if [ "$code" -ne "0" ]; then echo "ERR: tar -vxzf $tmpp原创 2015-06-01 09:58:37 · 458 阅读 · 0 评论 -
linux 设备文件属性
1.cd /dev2.查看当前已经加载的设备驱动程序的主设备号root@ubuntu:/dev# cat /proc/devicesCharacter devices: 1 mem 4 /dev/vc/0 4 tty 4 ttyS 5 /dev/tty 5 /dev/console 5 /dev/ptmx 5原创 2015-06-09 17:38:54 · 1977 阅读 · 0 评论 -
linux内核 asmlinkage宏
linux内核 asmlinkage宏2010-04-20 09:50:15 asmlinkage是个宏,使用它是为了保持参数在stack中。看一下/usr/include/asm/linkage.h里面的定义:#define asmlinkage CPP_ASMLINKAGE __attribute__((regparm(0)))其中转载 2015-07-27 16:39:32 · 393 阅读 · 0 评论 -
localtime 问题
不可重入函数localtime,localtime函数实现的问题:该函数返回的是一个指针,表示某一个地址。大家知道,如果是一个非静态的局部变量,返回它的地址是错误的做法,因为非静态的局部变量在函数返回时,已经被销毁了,它的地址成为无用的地址。因此localtime函数返回的指针只有以下三种可能:要么是一个静态变量的地址,要么是一个全局变量的地址,或者是使用malloc等转载 2015-07-27 14:59:00 · 1219 阅读 · 0 评论 -
柔性数组成员 长度为0的数组
柔性数组成员 http://blog.csdn.net/code_crash/article/details/4854939在讲述柔性数组成员之前,首先要介绍一下不完整类型(incomplete type)。不完整类型是这样一种类型,它缺乏足够的信息例如长度去描述转载 2015-08-19 10:40:01 · 327 阅读 · 0 评论 -
右左法则----复杂指针解析
右左法则----复杂指针解析 http://blog.csdn.net/code_crash/article/details/4854939 首先看看如下一个声明: int* ( *( *fun )( int* ) )[10]; 这是一个会让初学者感到头晕目眩、感到恐惧的函数指针声明。在熟练掌握C/C++的声明转载 2015-08-19 10:43:53 · 317 阅读 · 0 评论 -
pthread_join和pthread_detach的区别
pthread_join和pthread_detach的区别 创建一个线程默认的状态是joinable, 如果一个线程结束运行但没有被join,则它的状态类似于进程中的Zombie Process,即还有一部分资源没有被回收(退出状态码),所以创建线程者应该调用pthread_join来等待线程运行结束,并可得到线程的退出代码,回收其资源(类似于wait,waitp转载 2015-09-15 15:46:09 · 1357 阅读 · 0 评论 -
C语言的面向对象式重构
C语言的面向对象式重构从Martin Fowler最早提出重构的概念开始,到现在已经有很长时间了,重构已经是深入忍心了。与其说它是一种方法,不如说是一种思想、一种习惯。本文主要介绍C语言的面向对象式重构,希望对你有帮助,一起来看。重构(Refactoring转载 2015-05-07 11:39:14 · 1561 阅读 · 0 评论