随笔分类 -  C/C++

摘要:常在linux系统下开发,切换到windows后开发C程序忽感异常陌生,尤其是对于编译工具链。。。 这里记录下搭建C开发环境: 参考一: (1)选择 MinGW 管理 GCC 编译链 MinGW下载和安装教程 (biancheng.net) 上文介绍的比较齐全了,需要的工具、头文件、库文件都会下载到 阅读全文
posted @ 2022-01-06 17:04 hunterDing 阅读(205) 评论(0) 推荐(0)
摘要:C代码中嵌入汇编语句,常见格式如下: asm volatile( /* volatile : 可选,禁止编译器对汇编代码进行优化 */ "汇编语句模板" /* 汇编指令间使用'\n'分隔 */ :"=限制符"(输出参数) :"限制符"(输入参数) :损坏部分 ) 其中: 1、asm表示后面的代码为内 阅读全文
posted @ 2021-08-19 14:09 hunterDing 阅读(1534) 评论(0) 推荐(1)
摘要:在链接汇编代码和C代码时,一直出现下面错误: 提示无法找到符号:main,但是反汇编main.o文件,可以清楚看到main函数存在, 解决方法: 编译C文件时,添加编译参数-c,不进行链接: -E Preprocess only; do not compile, assemble or link. 阅读全文
posted @ 2021-08-11 17:34 hunterDing 阅读(108) 评论(0) 推荐(0)
摘要:openssl是进行安全开发时比较常用的开源库。在linux系统上如何获取openssl来支持开发呢? 1、通过系统工具安装(这里是aarch64体系结构linux机器) 在ubuntu下通过下列命令安装openssl工具集及代码开发包 (1)yum -y install openssl.aarch 阅读全文
posted @ 2021-05-08 15:13 hunterDing 阅读(498) 评论(0) 推荐(0)
摘要:vim开发环境配置包 配置包见文件标签下vim_config.rar文件,解压后包含.vimrc目录和.vimrc文件,直接放入家目录下即可。 1、分割窗口切换 noremap <c-j> <c-w>jnoremap <c-k> <c-w>knoremap <c-h> <c-w>hnoremap < 阅读全文
posted @ 2021-04-22 10:24 hunterDing 阅读(79) 评论(0) 推荐(0)
摘要:1、+/-用法 https://blog.csdn.net/chuanzhilong/article/details/52461410 “-” 表示即使 make 规则执行失败,忽略该条,继续执行。 make 通常会在命令运行结束后检查命令的执行的返回状态,如果返回成功,那么就启动一个子 shell 阅读全文
posted @ 2020-09-27 10:59 hunterDing 阅读(94) 评论(0) 推荐(0)
摘要:printf()在不同的系统上,占位符的可能有不同的写法,如: %ld:long int, 32位平台4 bytes %lld: long long int, 32位平台8 bytes 可以考虑使用 #include <inttypes.h> 头文件来做跨平台处理。 阅读全文
posted @ 2019-08-28 16:41 hunterDing 阅读(451) 评论(0) 推荐(0)
摘要:代码文件报错, error: unused parameter 'data' [-Werror,-Wunused-parameter]‘ 按提示在cflags中加入: "-Wunused-parameter"无法解决问题,考虑使用 "-Wno-unused-parameter", 阅读全文
posted @ 2019-08-01 17:02 hunterDing 阅读(565) 评论(0) 推荐(0)
摘要:cpp前置声明: 前置声明只能作为指针或引用,不能定义类的对象,也不能调用对象中的方法。 详见:https://www.cnblogs.com/dobben/p/7440745.html 阅读全文
posted @ 2019-07-22 16:22 hunterDing 阅读(220) 评论(0) 推荐(0)
摘要:在C中时常有类似这样的写法: 乍一看来,这样的方式有点不理解。听网友说: C中单引号内最多存4个字符,超过4个就会编译报错,字符数目个数为2,3,4时单引号内数据占用空间都为4字节。即:在对应的字节位置上存储了对应的字符。 如该例中,magic的四个字节分别对应字符‘e’ ‘v’ ‘n’ ‘t’。 阅读全文
posted @ 2019-04-28 16:14 hunterDing 阅读(810) 评论(0) 推荐(0)
摘要:结构体中常见的冒号的用法是表示位域。 有些信息在存储时,并不需要占用一个完整的字节,而只需占几个或一个二进制位。例如在存放一个开关量时,只有0和1两种状态,用一位二进位即可。为了节省存储空间,并使处理简便,C语言又提供了一种数据结构,称为“位域”或“位段”。所谓“位域”是把一个字节中的二进位划分为几 阅读全文
posted @ 2019-03-23 14:44 hunterDing 阅读(5645) 评论(0) 推荐(0)
摘要:linux中创建线程时,可以通过 __attr 指定线程的属性 extern int pthread_create (pthread_t *__thread, __const pthread_attr_t *__attr, void *(*__start_routine) (void *), voi 阅读全文
posted @ 2019-03-21 14:02 hunterDing 阅读(1670) 评论(0) 推荐(0)
摘要:这几天查编译问题时,在头文件中加入某些错误信息,却发现没有编译报错。想了一下可能是,还未进行到语法分析阶段。 这里再了解一下编译过程。 一般而言代码编译包含了四个阶段的处理,即预处理(也称预编译,Preprocessing)、编译(Compilation)、汇编 (Assembly)和连接(Link 阅读全文
posted @ 2019-01-21 16:28 hunterDing 阅读(376) 评论(0) 推荐(0)
摘要:这篇文章主要记录一下c程序运行时内存空间如何使用。(摘抄自网络) 在一个多任务操作系统中的每个进程都运行在它自己的内存“沙箱”中。这个沙箱是一个虚拟地址空间(virtual address space),在 32 位系统中它总共有 4GB 的内存地址空间,包含内核空间和用户空间: 这些虚拟地址是通过 阅读全文
posted @ 2018-12-26 14:37 hunterDing 阅读(519) 评论(0) 推荐(0)
摘要:“Lambda 表达式”(lambda expression)是一个匿名函数,即没有函数名的函数。 介绍C++ lambda表达式的一个比较好的博文,https://www.cnblogs.com/DswCnblog/p/5629165.html 声明Lambda表达式 Lambda表达式完整的声明 阅读全文
posted @ 2018-12-20 11:09 hunterDing 阅读(233) 评论(0) 推荐(0)
摘要:C++中变量的初始化有很多种方式,如:默认初始化,值初始化,直接初始化,拷贝初始化,列表初始化。 1、默认初始化:默认初始化是指定义变量时没有指定初值时进行的初始化操作。 如:int a;这些变量被定义了而没有显式的赋予初值。 特别的,采用动态分配内存的方式(即采用new关键字)创建的变量,不加括号 阅读全文
posted @ 2018-09-20 11:13 hunterDing 阅读(16562) 评论(0) 推荐(2)
摘要:为了避免同一个文件被include多次,C/C++中有两种方式,一种是#ifndef方式,一种是#pragma once方式。 方式一: #ifndef __SOMEFILE_H__ #define __SOMEFILE_H__ ... ... // 一些声明语句 #endif 方式二: #prag 阅读全文
posted @ 2018-08-28 10:35 hunterDing 阅读(404) 评论(0) 推荐(0)
摘要:C++ const 允许指定一个语义约束,编译器会强制实施这个约束,允许程序员告诉编译器某值是保持不变的。如果在编程中确实有某个值保持不变,就应该明确使用const,这样可以获得编译器的帮助。 1.const 修饰成员变量 const修饰指针变量时: (1)只有一个const,如果const位于*左 阅读全文
posted @ 2017-06-12 13:43 hunterDing 阅读(220) 评论(0) 推荐(0)