C/C++
文章平均质量分 88
LoveMIss-Y
爱生活,爱学习,爱这个世界上一切让自己觉得快乐的东西,爱MIss-Y
展开
-
Linux中关于动态(共享)库的设置
前言:关于Linux中的动态共享库是如何使用的,程序在执行的时候是如何找到的,我们该怎么去设置,可以参考前面的几篇文章。C/C++中关于静态链接库(.a)、动态链接库(.so)的编译与使用VSCode开发C、C++环境搭建系列(二)——GCC/G++编译器对头文件、静态库、动态库的搜索路径详解本文会设计主要四个概念:/etc/ld.so.conf、/etc/ld.so.conf....原创 2020-04-23 14:42:47 · 1754 阅读 · 0 评论 -
C/C++中关于静态链接库(.a)、动态链接库(.so)的编译与使用
前言:关于Linux中环境的配置,编译等工作,有很多的坑,前面的一片文章中已经比较详细的介绍了GCC编译套件的一些东西,具体请参考:VSCode开发C、C++环境搭建系列(二)——GCC/G++编译器对头文件、静态库、动态库的搜索路径详解一、从动态库的编译说起下面通过一个例子来介绍如何生成一个动态库。这里有一个头文件:so_test.h,三个.c文件:test_a.c、test...原创 2020-04-23 11:41:35 · 9250 阅读 · 0 评论 -
C语言文件I/O操作值ungetc()函数深入详解
前言:最近在看C语言的基本文件操作,遇到一个函数ungetc(),看了一些文章,发现并没有一篇真正写清楚的,都是转载来转再去,就那几句话说来说去,决定自己写一篇,来详细探讨这个函数的用法。一、ungetc函数概述我们都知道getc函数的作用,它的作用是从文件流中读取一个字符char,这个文件流可以是一般的文件流,也可以是标准文件流,顾名思义,ungetc的作用应该是和这个相反的,既然g...原创 2020-01-15 16:55:59 · 6636 阅读 · 7 评论 -
C语言类型限定符(type specifier)(二)——restrict和_Atomic详细教程
前言:C语言中的类型限定符一共有四个,const,volatile,restrict,_Atomic,前面的一片文章详细介绍了volatile的作用以及使用方法,本文为系列文章第二篇,介绍接下来的两个类型限定符,restrict,和 _Atomic,前一篇文章请参考:C语言类型限定符(type specifier)(一)——volatile详细教程一、restrict类型限定符(1...原创 2020-01-13 11:23:55 · 1836 阅读 · 0 评论 -
C/C++指令集介绍以及优化(主要针对SSE优化)
前言:最近在做一些OpenCV的优化相关的东西,发现OpenCV现在的执行效率很高的原因一部分是来自于底层的优化,比如指令集优化,但是一直没找到比较系统性的关于CPU指令集优化的文章或者是书籍,于是自己打算做一个总结,鉴于水平有限,有不正确的地方还望有大佬指正。一、CPU指令集优化的概述1.1 数据并行的两种实现在计算机体系中,数据并行有两种实现路径:MIMD(Multipl...原创 2020-01-11 14:46:01 · 18632 阅读 · 6 评论 -
(windows平台下)深入详解C++创建动态链接库DLL以及如何使用它(一)
前言:C以及C++的动态链接库和静态链接库,说起来很简单,但是实际上在创建的过程中有很多的坑,本人也是一路踩了很多坑,查了很多资料,下决定写一篇完整的文章来详细解释使用VS创建C++动态链接库的完整流程。本文的开发环境是VS 2017。另外关于如何使用动态链接库与静态链接库,请参考前面的文章:VS2017的动态链接库(Dynamic Link Library)配置g++安装配置以及...原创 2020-01-10 16:04:19 · 5376 阅读 · 0 评论 -
为什么要用make?为什么要用cmake?Linux源码编译的一般流程?
前言:对于C/C++以及Linux用户来说,编译器,make,cmake这几个工具是天天要接触到的,那到底为什么要使用呢?本文做一个小小的总结。一、编译器gcc与g++gcc是GNU Compiler Collection(就是GNU编译器套件),也可以简单认为是编译器,它可以编译很多种编程语言(括C、C++、Objective-C、Fortran、Java等等)。当你的程序只有...原创 2019-12-04 19:39:13 · 9340 阅读 · 6 评论 -
VS2017的动态链接库(Dynamic Link Library)配置
前言:和静态链接库不同的是,静态链接库是在程序编译的时候就需要的,而动态链接库是在程序执行的时候才需要,在VS2017这样的集成开发环境之下,动态链接库的配置方式有很多,很多文章只说了其中一些,本文针对此种情况做一个简单的汇总。一、直接拷贝法将需要的动态链接库直接拷贝到和可执行程序的同目录之下,这是最常见,最通用的方法了。二、拷贝到两个特殊的目录32位的 x86的动态链接库 ...原创 2019-12-02 15:08:13 · 4796 阅读 · 0 评论 -
cmake的generator详解
前言:cmake会通过cmakelist.txt文件,生成适用于不同项目类型的makefile文件,然后makefile文件被不同的编译器使用进行编译,考虑到C/C++的开发环境之多,有非常多的种类的项目开发环境,但是cmake基本上都考虑到了,这里做一个小的汇总。CMake支持下列generator:Visual Studio 6: 生成Visual Studio 6 工程文件。 ...转载 2019-11-30 11:20:14 · 10190 阅读 · 0 评论 -
Linux环境之下使用VS Code搭建C/C++开发环境
前言:前面的文章介绍了在Windows平台之下使用Ming-win64和MSVC搭建C/C++的开发环境,本文开始介绍在Linux平台之下如何搭建开发环境。可以参考前面两篇文章:VSCode开发C、C++环境搭建系列(一)——基于Mingw-w64搭建VSCode开发C、C++环境搭建系列(三)——基于MSVC搭建一、基本的软件安装gccg++makecmake这四...原创 2019-11-29 17:53:12 · 8048 阅读 · 0 评论 -
C++中的“引用”详解
前言:在面向对象的程序设计语言中,我们经常听见一些名词,引用,地址,在函数传递参数的时候,我们又经常说值传递,引用传递,最容易让人搞混淆的就是“引用”和“地址”这两个概念了,对于C++和C#来说,引用一词从他们所呈现的表象来看的确很类似,但是本质实际上是不一样的,C++:引用就是一个变量的别名;C#:引用可以用指针去理解,虽然C#没有指针,我们经常说某个变量所引用的数据,可以理解为某...原创 2019-11-22 11:45:06 · 15812 阅读 · 7 评论 -
C语言类型限定符(type specifier)(一)——volatile详细教程
前言:C语言有几个类型限定符(type specifier),如C90中的const和volatile,C99中的restrict,C11中的_Atomic,除了const以外,很多书籍对于其他几个修饰符现有提示,即便是有也是一笔带过,当然不是说他们不重要可有可无,主要是我们平时的学习可能很少使用的到,本次系列文章就来专门说一说这几个类型限定符的含义和使用。本文是第一篇,解释volatile的...原创 2019-11-20 11:04:46 · 2923 阅读 · 0 评论 -
C语言指针进阶(二)——再谈指针、函数、数组复杂的三叉戟关系
前言:前面有一篇文章是专门针对函数指针与指针函数的,本文再进一步说明指针,涉及到两个较为复杂烦琐的概念,即函数指针数组、函数指针数组的指针。前一篇文章参考为:C语言指针进阶(一)——深入详解“函数指针”与“指针函数”一、函数指针数组前面的文章已经详细介绍了函数指针,它是如何定义的也已经很清楚了,那究竟什么是函数指针数组呢?1.1 案例一先从一个案例来说明,比如我有四个函...原创 2019-11-18 11:46:15 · 1108 阅读 · 1 评论 -
C语言运算符四元素(名称、优先级、结合数、结合方向)深入详解
前言:C语言是最为复杂的语言,一些简单的运算看似简单,但是往往比较易错难懂,弄明白运算符的优先级是学习后面很多内容的基础,本文将C语言的的运算符做了一个较为全面的汇总。特别像是指针运算,如果对于运算符的相关特性把握不准确,则很容易发生错误,得到错误的结果。一、运算符引言——从指针谈起很多刚学编程的同学对c语言运算符的优先级往往存在一些困惑,对于一些已经入门了的同学一些不太常见的用法也...原创 2019-11-18 14:20:20 · 3152 阅读 · 0 评论 -
C语言指针进阶(一)——深入详解“函数指针”与“指针函数”
前言:C语言最难的地方莫过于各种类型的指针,光听名字就把人给绕晕了,本文是在一些重要的基础概念之上进行说明的,需要一些知识储备,即:什么是数组指针、指针数组、函数指针、指针函数等,然后才能看得懂本文。一、简单概述1.1 函数指针所谓函数指针即定义一个指向函数的指针变量,定义的格式如下:int (*p)(int x, int y); //注意:这里的括号不能掉,因为括号()...原创 2019-11-15 15:40:50 · 63955 阅读 · 22 评论 -
VS2017配置OpenCV4.1.1超详细教程(项目配置与永久配置)(一)
前言:我看了很多网上配置opencv的文章,个人感觉不是很全面,本文做一个比较全面的总结,我们配置OpenCV的时候不仅仅希望对一个项目进行配置,我们希望每次创建opencv程序的时候,都可以直接使用,即所谓的永久配置。本文的开发环境是Visual Studio 2017加上opencv4.1.1 。另外这里需要使用VS2017加以配置,有几个关键的概念:包含目录、附加包含目录、库目录、附...原创 2019-11-13 10:41:04 · 11471 阅读 · 5 评论 -
Visual Studio中C++的包含目录、附加包含目录和库目录和附加库目录的区别
前言:最近做opencv的配置与开发的时候发现opencv我们有多种配置方式,在项目属性里面有几个很重要的配置概念,重点是下面四个,包含目录、附加包含目录、库目录、附加库目录,那么到底有什么区别呢?一、opencv配置简介在配置opencv的时候必须要配置三样东西头文件包含路径:即所谓的 包含目录 或者是 附加包含目录 库文件路径:即所谓的 库目录 或者是 附加库目...原创 2019-11-12 19:15:39 · 23364 阅读 · 0 评论 -
VSCode开发C、C++环境搭建系列(三)——基于MSVC搭建
前言:本文为系列文章的第三篇,讲解如何利用Windows C++(MSVC)结合VS Code搭建一个完整的开发环境,前面的两篇文章参考下面:VSCode开发C、C++环境搭建系列(一)——基于Mingw-w64搭建VSCode开发C、C++环境搭建系列(二)——GCC/G++编译器对头文件、静态库、动态库的搜索路径详解详细关于MSVC的使用可以参考官方网站:https://d...原创 2019-11-09 23:59:12 · 8411 阅读 · 1 评论 -
VSCode开发C、C++环境搭建系列(二)——GCC/G++编译器对头文件、静态库、动态库的搜索路径详解
前言:前面说了C/C++编译的四大过程,本文继续前面的文章来说明编译过程中的注意事项,前面的系列文章请参考:g++安装配置以及C++的四个编译处理过程(对比C#编译执行过程)VSCode开发C、C++环境搭建系列(一)——基于Mingw-w64搭建一、GCC编译的四大过程回顾预处理(Pre-Processing):主要包括宏定义,文件包含,条件编译,注释消除四部分。...原创 2019-10-21 17:30:33 · 10113 阅读 · 0 评论 -
一文详解堆栈(一)——数据结构的堆与栈
前言:我们经常听见一个概念,堆(heap)和栈(stack),其实在数据结构中也有同样的这两个概念,但是这和内存的堆栈是不一样的东西哦,本文也会说明他们之间的区别的,另外,本文的只是是以C/C++为背景来说明,不同的语言在内存管理上面会有区别。本文是第一篇,简要介绍数据结构中的堆与栈。一、数据结构中的堆与栈数据结构中,堆(heap)与栈(stack)是两个常见的数据结构,理解二者的定义...原创 2019-10-15 19:05:22 · 20694 阅读 · 0 评论 -
C语言#include使用“尖括号”与“双引号”的区别
前言:我们又是在写C++的时候,会看见这样的写法 # include <stdio.h>或者是# include "stdio.h",它们有什么区别呢?其实很简单,本文做一个简单的说明。一、不同的搜索路径对于使用双引号还是尖括号,它们的主要区别是:编译器预处理阶段查找头文件的路径不一样。1、对于使用双引号的头文件查找头文件路径的顺序为:(1)先在当前源文件所...原创 2019-10-15 15:50:33 · 15121 阅读 · 1 评论 -
VSCode开发C、C++环境搭建系列(一)——基于Mingw-w64搭建
前言:本次系列文章详细说明基于VS Code来搭建C、C++的开发环境,本次的操作系统是Windows系统,在Windows上面,会有两种不同主流编译器,及Mingw-W64和MSVC,本文介绍第一种,是系列文章的第一篇。概念辨析:Mingw-w64。是 GCC 的 Windows 版本 ;Cygwin。是一个在windows平台上运行的类UNIX模拟环境,在Windows上面提...原创 2019-10-13 18:20:53 · 9667 阅读 · 2 评论 -
g++安装配置以及C++的四个编译处理过程(对比C#编译执行过程)
一、C++的编译器不像python等动态语言,C、C++是静态语言,需要编译之后,然后才能执行,C++的编译器有很多,比如常见的MSVC、g++(gcc)、等,本文介绍g++,关于g++的详细介绍,本文不再介绍,可以查阅相关文档。二、windows平台下g++的安装与配置gcc原本是基于Linux平台的,但是在windows平台上提供了一个同样的实现,叫做MingW即(Mi...原创 2019-02-19 16:11:57 · 1714 阅读 · 0 评论