
C和C++语言
Donald Linux
日拱一卒无有尽 功不唐捐终入海
展开
-
2024-06-06 C语言结构体成员变量位域(bit-field)的使用,它允许我们有效地利用数据存储空间,将多个逻辑上相关的小数据放在同一个字节中
的宽度为 3 位,因为它后面紧跟着冒号和数字 3,这表示该成员变量只占用 3 个位。这种语法被称为位域(bit-field),它允许我们有效地利用数据存储空间,将多个逻辑上相关的小数据放在同一个字节中。的位域宽度为 3,意味着它可以存储的数值范围是 0 到 7(2^3 - 1)。根据具体的应用场景,这 3 位可以用来表示不同的状态、类型或者标志位等信息。mipi 和 type是共用在一个字节里面。原创 2024-06-06 11:34:31 · 520 阅读 · 0 评论 -
2024-05-21 C语言fopen打开文件不使用fclose关闭会导致程序文件描述符耗尽,导致程序崩溃
【代码】2024-05-21 C语言fopen打开文件不使用fclose关闭会导致程序文件描述符耗尽,导致程序崩溃。原创 2024-05-21 15:23:30 · 516 阅读 · 1 评论 -
2024-05-20 C语言中,一个可执行程序修改了动态链接库so中全局变量值,当该可执行程序退出并重新启动时,这个全局变量的值会恢复为初始值。两个可执行程序同时修改动态链接库里的全局变量,互相不影响
每个运行的可执行程序实例都会在其自己的地址空间内有一份动态链接库的加载副本。这意味着当两个不同的进程加载同一个动态链接库时,它们操作的是物理内存中的同一份代码(如果操作系统支持代码共享),但是每个进程的全局变量副本通常是独立的。分别修改同一动态链接库中的同一全局变量时,每个进程只会影响到其自己地址空间中的那份全局变量副本。)同时修改同一个动态链接库中的全局变量时,这个变量的值将取决于两个程序对该变量修改操作的相对时序和方式。因此,重新启动程序后,动态链接库中的全局变量值将恢复为编译时设定的初始值。原创 2024-05-20 11:12:18 · 531 阅读 · 0 评论 -
2024-04-16 使用C语言把FMT_YUV400SP (gray8)/* YYYY... */格式的数据转换为 JPEG 文件
中,只有一个平面,即亮度平面(Y)。这意味着每个像素只有一个亮度值灰度图像或单通道图像,例如黑白摄像头捕获的图像或某些图像处理操作的中间结果。格式的数据转换为 JPEG 文件,您可以使用一些库来处理图像编码和文件写入。在 C 语言中,您可以使用像 libjpeg 这样的库来实现这个任务。是一种仅包含亮度分量的图像格式,没有色度分量,通常用于表示灰度图像数据。以下是一个简单的示例,演示了如何使用 libjpeg 库将。格式的数据转换为 JPEG 文件。原创 2024-05-16 15:58:09 · 248 阅读 · 1 评论 -
2024-02-26 怎么看一个动态链接库so 里面的函数是c还是c++编译?使用nm或objdump命令行工具来检查链接库是否包含C++符号。nm -D mylib.so 或者 objdump -T
这种方法不能100%确定库是用C++编译的,因为有些情况下C++代码可能extern "C"接口,使得符号看起来像C,但作为一种快速检查方法,这还是很有用的。由于C++编译器在生成符号名称时会使用名为“mangling”的过程,这使得C++的符号名称看起来与C的符号名称不同。可以列出链接库中的符号。C++的符号会看起来很复杂,可能包含许多看似随机的字符和多个下划线,而C的符号通常都是可读的文本。原创 2024-02-26 17:48:51 · 626 阅读 · 0 评论 -
2024-01-05 C语言定义的函数名里面插入宏定义,对函数名进行封装,可以通过宏定义批量修改整个文件的函数名里面的内容
为了解决这个问题,通常需要使用两层宏:一层用于参数宏的展开,另一层用于连接操作。运算符将不会导致参数宏的展开。这是因为宏的展开顺序规则导致。运算符在宏定义中用于连接两个令牌。然而,当使用宏参数与。运算符一起使用时,并且这些参数本身是宏时,直接使用。阻止了参数宏先于连接操作的展开。原创 2024-01-15 18:34:51 · 692 阅读 · 0 评论 -
2024-01-09 Android.mk 根据c文件名插入特定的宏定义,我这里用于定义log LOG_TAG 标签
【代码】2024-01-09 Android.mk 根据c文件名插入特定的宏定义,我这里用于定义log LOG_TAG 标签。原创 2024-01-09 17:29:58 · 707 阅读 · 0 评论 -
2023-12-22 linux C语言pthread_kill函数,pthread_kill(tid, 0)可以用来判断线程是否存在
当我们给线程发送一个0就可以判断线程是否存在。这是一个保留信号,一个作用是用来判断线程是不是还活着。原创 2023-12-22 19:38:12 · 1611 阅读 · 0 评论 -
2023-11-28 C语言if语句多个||或 与&&的时时候,会顺序执行,不满足条件则退出,不会再比较后面的内容,实例测试
【代码】2023-11-28 C语言if语句多个||或 与&&的时时候,会顺序执行,不满足条件则退出,不会再比较后面的内容,实例测试。原创 2023-11-28 17:17:28 · 2074 阅读 · 0 评论 -
2023-08-03 C语言小知识 switch case语句的case 后就使用范围表达式,可以用 case 1 ... 5:,linux kernel 中也是可以这么用,编译通过
【代码】2023-08-03 C语言小知识 switch case语句的case 后就使用范围表达式,可以用 case 1 ... 5:,linux kernel 中也是可以这么用,编译通过。原创 2023-08-03 18:35:31 · 4221 阅读 · 0 评论 -
2023-07-31 C语言根据错误号打印详细的错误信息perror(““) 或者strerror(errno)
【代码】2023-07-31 C语言根据错误号打印详细的错误信息perror(““) 或者strerror(errno)原创 2023-07-31 17:46:29 · 720 阅读 · 0 评论 -
2023-02-15 C语言按字节输出结构体里面的内容
【代码】2023-02-15 C语言按字节输出结构体里面的内容。原创 2023-02-15 16:41:50 · 699 阅读 · 0 评论 -
2022-10-21 linux 使用device_for_each_child_node 遍历dts里面的所有结点node,用gpio-leds驱动分析
08 在设备树里描述platform_device【转】 - 走看看 (zoukankan.com)原创 2022-10-21 16:41:16 · 1045 阅读 · 0 评论 -
2022-10-21 C语言二级指针( 双重指针 )常见用法,实例测试-传入一维指针地址可以取出函数内部申请的动态内存,取出变量值。
【代码】2022-10-21 C语言二级指针( 双重指针 )常见用法,实例测试-传入一维指针地址可以取出函数内部申请的动态内存,取出变量值。原创 2022-10-21 16:00:55 · 619 阅读 · 0 评论 -
2022-08-16 C语言if语句判断有符号int和无符合int 是否是true的实例测试-会把有符号转成无符号
代码】2022-08-16 C语言if语句判断有符号int和无符合int 是否是true的实例测试-会把有符号转成无符号。原创 2022-08-16 18:27:57 · 1135 阅读 · 0 评论 -
2021-12-27 C、C++ java代码在线运行网站
一、介绍两个C、C++ java代码在线运行网站,有时候那里测试挺方便的,这个好的东西我以前就怎么不知道,哎。1、代码编辑器_www.cjavapy.com2、代码在线运行 - 在线工具二、运行效果图...原创 2021-12-27 18:52:26 · 2193 阅读 · 0 评论 -
C++ virtual虚函数和override关键字学习,C++实例测试.
一、在分析AndroidR 电池上层部分看到virtual虚函数和override。二、什么是虚函数: 在面向对象的C++语言中,虚函数(virtual function)是一个非常重要的概念。虚函数是指一个类中你希望重载的成员函数 ,当你用一个基类指针或引用 指向一个继承类对象的时候,调用一个虚函数时, 实际调用的是继承类的版本。三、实例测试更能直观的理解,在android设备上运行。 1、virtual_demo.cpp#include <iostre...原创 2021-12-22 12:00:34 · 1407 阅读 · 0 评论 -
2021-12-16 C语言绘制心形代码
一、源码如下:#include <stdio.h>#include <stdlib.h>#include <unistd.h>int main() { for (float y = 1.5; y > -1.5; y -= 0.1) { for (float x = -1.5; x < 1.5; x += 0.04) { float a = x * x + y * y - 1; ..原创 2021-12-16 20:14:50 · 5347 阅读 · 1 评论 -
2021-05-20 C语言int打印出二进制数代码
C语言int打印出二进制数代码一、在C语言中,打印16进制可以使用printf的%x格式。打印二进制数并没有现成的格式数值,只能自行编写函数打印。二、测试代码。#include "stdio.h"#include "stdlib.h"/* * 二进制数格式输出,输出所有位 * 6bit * 011010 * 100000 1<<5 * & * */void print_bin(int number){ ...原创 2021-05-20 11:08:52 · 2351 阅读 · 0 评论 -
2021-05-19 C语言逻辑取反! 学习
C语言逻辑取反! 学习一、测试代码,!:代表值得取反,对于整形变量,只要不为0,使用!取反都是0,0取反就是1。就像bool只有真假一样。if语句会把有符号转成无符号,所以取法非0的有符号数都是false。#include "stdio.h"#include "stdlib.h"/* * 二进制数格式输出,输出所有位 * 6bit * 011010 * 100000 1<<5 * & * ...原创 2021-05-19 11:50:25 · 5158 阅读 · 0 评论 -
2021-04-08 C语言 遍历一个文件夹的所有文件以及函数strstri不区分大小写查找字符串
C语言 遍历一个文件夹的所有文件以及函数strstri不区分大小写查找字符串一、遍历一个文件夹的所有文件代码int listallfilename(const char* path){ DIR *dir; struct dirent *ptr; dir = opendir(path); while((ptr = readdir(dir)) != NULL) { printf("path=%s,d_name: %s\n",.原创 2021-04-08 14:26:45 · 939 阅读 · 0 评论 -
2021-03-08 C语言__attribute__ ((constructor))和__attribute__ ((destructor))
C语言__attribute__ ((constructor))和__attribute__ ((destructor))一、gcc为函数提供了几种类型的属性,其中包含:构造函数(constructors)和析构函数(destructors),可带优先级。 使用类似下面的方式来指定这些属性: static void start(void) __attribute__ ((constructor)); static void ...原创 2021-03-08 15:25:21 · 539 阅读 · 0 评论 -
2021-03-08 C语言strcasecmp函数和strncasecmp函数介绍和实例测试
C语言strcasecmp函数和strncasecmp函数介绍和实例测试一、strcasecmp()用来比较参数s1和s2字符串,比较时会自动忽略大小写的差异。若参数s1和s2字符串相同则返回0。s1长度大于s2长度则返回大于0 的值,s1 长度若小于s2 长度则返回小于0的值。unsigned char strcasecmp(const char *s1, const char *s2){ unsigned char c1 , c2; ...原创 2021-03-08 14:43:27 · 1279 阅读 · 0 评论 -
2021-02-27 C++中的for(auto a : b)和for(auto &a : b)用法
C++中的for(auto a : b)和for(auto &a : b)用法一、c++ 11后新增该for循环。一、两种用法的区别。 for(auto a:b)中b为一个容器,效果是利用a遍历并获得b容器中的每一个值,但是a无法影响到b容器中的元素。 for(auto &a:b)中加了引用符号,可以对容器中的内容进行赋值,即可通过对a赋值来做到容器b的内容填充。二、测试实例 1、测试代码...原创 2021-02-27 16:43:30 · 2844 阅读 · 0 评论 -
2021-01-16 C++标准库getline函数的使用
C++ 标准库getline函数的使用一、头文件:#include<string>二、getline函数有四种重载形式。istream& getline (istream& is, string& str, char delim);istream& getline (istream&& is, string& str, char delim);istre...原创 2021-01-16 13:54:04 · 936 阅读 · 0 评论 -
2021-01-16 Ubuntu下编译C++ cpp文件
Ubuntu下编译C++ cpp文件一、方法一。g++ -o name name.cpp //用选项-o可以生成其他名字的可执行文件二、方法二。g++ name.cpp //执行完这个会生成a.out文件./a.out //执行三、测试。...原创 2021-01-16 10:58:21 · 767 阅读 · 0 评论 -
2020-01-12 C语言sscanf提取特定规律字符串里面的内容
C语言sscanf提取特定规律字符串里面的内容一、测试代码。#include<stdio.h>void main(void){ char *toybuf="BUSNUM=123 DEVNUM=456 PRODUCT=789/321/"; char *usb_in="Bus 001 Device 504: ID 05e3:0608"; int busnum = 0, devnum = 0, pid = 0, ...原创 2021-01-12 11:49:43 · 784 阅读 · 0 评论 -
2020-10-29 Ubuntu下测试 C DLOPEN加载动态链接库
Ubuntu下测试 C DLOPEN加载动态链接库一、add_function.c#include <stdio.h> #include <stdlib.h> int add_function(int i, int j) { printf("add_function\n"); return i+j; };二、demo_dlopen.c#include <stdio.h> #...原创 2020-10-29 11:12:24 · 447 阅读 · 0 评论 -
2020-10-29 Android调用动态链接库实例测试
Android调用动态链接库实例测试一、Android.mkLOCAL_PATH := $(call my-dir)include $(CLEAR_VARS)LOCAL_MODULE_TAGS := optionalLOCAL_MODULE:=libreference-testLOCAL_SRC_FILES := $(call all-subdir-c-files)LOCAL_LDLIBS := -llogLOCAL_CFLAGS += -DRIL...原创 2020-10-29 10:50:16 · 654 阅读 · 0 评论 -
C语言 strtok函数分解字符串为一组字符串
C语言 strtok函数分解字符串为一组字符串一、SYNOPSIS #include <string.h> char *strtok(char *str, const char *delim);二、DESCRIPTION The strtok() function breaks a string into a sequence of zero or more nonempty tokens. On the fi...原创 2020-09-28 14:50:11 · 358 阅读 · 0 评论 -
C语言 解析Hdmi edid 信息数据
C语言 解析Hdmi edid 信息数据一、EDID: Extended Display Identification Data(扩展显示标识数据)是一种VESA 标准数据格式,其中包含有关监视器及其性能的参数,包括供应商信息、最大图像大小、颜色设置、厂商预设置、频率范围的限制以及显示器名和序列号的字符串。二、用C语言解析EDID信息。 1、analyze_edid.c源码...原创 2020-09-11 12:11:28 · 1600 阅读 · 0 评论 -
C语言读bin文件内容
C语言读bin文件内容一、直接上代码,我这里是读显示器edid的内容,read_bin_file.c#include<stdio.h>#include<string.h>#include"edid.h"typedef unsigned char u8;typedef unsigned long int u32;/**************************************...原创 2020-07-20 18:50:35 · 13363 阅读 · 0 评论 -
C语言:popen函数的使用
C语言:popen函数的使用一、利用system函数调用shell命令,只能获取到shell命令的返回值,而不能获取shell命令的输出结果,那如果想获取输出结果怎么办呢?用popen函数可以实现。二、定义函数:FILE * popen(const char * command, const char...原创 2020-03-25 14:53:21 · 27138 阅读 · 0 评论 -
C语言:fgets和fgetc函数读取文件
C语言:fgets和fgetc函数读取文件1、fgetc 是 file get char 的缩写,意思是从指定的文件中读取一个字符。fgetc() reads the next character from stream and returns it as an unsigned char cast to an int, or EOF ...原创 2020-03-19 19:54:48 · 3791 阅读 · 0 评论 -
C语言:strstr()函数用来检索子串在字符串中首次出现的位置
C语言:strstr()函数用来检索子串在字符串中首次出现的位置一、strstr()函数用来检索子串在字符串中首次出现的位置,其原型为: char *strstr( char *str, char * substr ); 1、头文件:#include <string.h> 2、参数说明:str为要检索的字符串,substr为...原创 2019-11-22 18:00:47 · 9852 阅读 · 0 评论 -
C语言:access函数的使用
C语言:access函数的使用一、access()函数用来判断用户是否具有访问某个文件的权限(或判断某个文件是否存在).二、需要包含#include<unistd.h>三、参数和返回值 int access(const char *pathname,int mode)参数: pa...原创 2019-11-08 17:36:40 · 35624 阅读 · 0 评论 -
64位机和32位机数据类型对应字节数
一、32位机数据类型对应字节数:二、64位机数据类型对应字节数:原创 2017-11-22 12:14:17 · 4718 阅读 · 0 评论 -
Linux时间函数gettimeofday() 简介和实例测试
Linux时间函数gettimeofday() 简介和实例测试一、gettimeofday The functions can gives the number of seconds and microseconds since the Epoch 获得当前精确时间(1970年1月1日到现在的时间),精度可以达到微妙。二、相关的原创 2017-12-01 10:40:23 · 2124 阅读 · 0 评论 -
C语言sscanf()函数的介绍和实例代码学习
C语言sscanf()函数的介绍和实例代码学习 一、基本简介 1、sscanf() C语言中从一个字符串中读进与指定格式相符的数据的函数。这个函数很强大,用好了可以在 处理字符串的时候可以省掉很多事情。 2、函数原型:原创 2017-11-30 18:57:11 · 2915 阅读 · 0 评论 -
C语言程序获取或者打印当前语句所在的行号、当前源文件的文件名、程序编译的日期等信息(__LINE__、__FUNCTION__、__FILE__、__DATE__、__TIME__)
C语言程序获取或者打印当前语句所在的行号、当前源文件的文件名、程序编译的日期等信息(__LINE__、__FUNCTION__、__FILE__、__DATE__、__TIME__)一、在调试C语言程序的时候有时候需要在程序里面获取或者打印当前语句所在的行号、当前源文件的文件名、程序编译的日期、程序被编译的时间、当前编译器符合ISO标准等相关信息。这就需要调用系统里面的已经定义好的宏,原创 2017-11-30 11:01:03 · 4816 阅读 · 0 评论