
C/C++
文章平均质量分 68
Data-Mining
一枚典型的音视频技术爱好者
展开
-
在不同操作系统上如何安装符号表提取工具(eu-strip)
C++开发的小伙伴都知道符号表在调试和解决崩溃时扮演着非常重要的角色,那么如何提取和保存发布应用程序的符号表就变得非常重要。今天就来聊一下如何在不同的操作系统上使用eu-strip提取应用程序中的符号表信息。原创 2023-09-03 12:22:09 · 1598 阅读 · 0 评论 -
#ifdef vs #if defined 的差异
C++语法中经常会使用很多预处理命令,当编译器将C++代码翻译成汇编的过程中,首先会通过预处理命令来对代码的内容和编译方式进行调整。预处理指令就是去配置预处理器的各种各样的指令,一般来说,预处理命令都会以“#”开头。比如,我们之前用到的#include就是其中一个预处理命令。除此之外,还有 #pragma,#define,#ifdef,#ifndef,#endif,#if defined等。其中,#ifdef 和 #if defined 就是我们今天要对比的两个指令。原创 2022-09-29 23:56:10 · 4132 阅读 · 0 评论 -
使用 VS 2017 打开 VS 2019 项目时常见的两类错误
Microsoft Visual Studio(简称VS)是美国微软公司发布的开发工具系列产品。VS 是一个比较完整的开发工具集,它包括了整个软件生命周期中所需要的大部分工具,比如 UML 工具、代码管控工具、集成开发环境(IDE)等。Visual Studio IDE 是目前最流行的 Windows 平台应用程序的集成开发环境,现在最新版本为 Visual Studio 2022,基于.NET Framework 4.8。原创 2022-09-28 23:34:28 · 5449 阅读 · 0 评论 -
C++中字符三兄弟(WCHAR、CHAR、TCHAR)
前言众所周知,C++中的字符分成两种类型:wchar_t和char。其中,WCHAR 对应 wchar_t,CHAR 对应 char,TCHAR 是一种条件编译的类型,根据条件动态代表 wchar_t 或者 char。一、与字符集的关系其实,它们三者和对应的字符集相关。C语言用 char 来表示一个8位 ANSI 字符,用wchar_t表示一个16位的Unicode字符。strlen返回一个ANSI字符串的长度,wcslen返回一个Unicode字符串的长度。其中,ANSI 是单字节字符集,原创 2022-04-16 22:22:13 · 8903 阅读 · 0 评论 -
Visual Studio 提示:类设计器将不可用
今天想使用 Visual Studio 2019 查看一个C++工程的代码类图关系,但是查看类图时,却遇到如下报错信息:类设计器将不可用,请确保通过重启 visual studio 安装程序并选择“修改”选项的方式进行安装(今天忘记截图了,下次一定记得)。原创 2022-03-30 23:18:07 · 3361 阅读 · 3 评论 -
Golang指针和C++指针的简单剖析
目录前言正文什么是指针?指针怎么用?前言不止C++才有指针,Golang也有指针呦!二者有哪些区别呢?今天就来看一看。正文什么是指针?指针是用来指向任何一个变量的内存地址的类型,它所指向的变量的内存地址在 32 和 64 位机器上分别占用 4 或 8 个字节,占用字节的大小与所指向的值的大小无关。下面我们通过一个例子来了解一下指针是如何表示地址的。实例代码:package mainimport ( "fmt")func mai.原创 2021-05-25 22:57:25 · 1419 阅读 · 12 评论 -
学弟学妹们,如果这五道题都不会,就不要出去面试C++了
「导读」出门闯荡江湖需要武艺傍身,出去面试也需要常规的技能加持。如果你想要面试C++的岗位,就需要具备一定的基础知识。不如现在就用这篇文章来检验一下自己的知识储备情况,能够全部答对的话最好,说明C++相关的基础知识掌握的不错;如果有一两道没答对或者不会,说明你还需要再努力一下,夯实基础很重要。题目经典,欢迎收藏!原创 2021-05-03 23:34:43 · 20758 阅读 · 110 评论 -
error: function has internal linkage but is not defined
问题:error: function *has internal linkage but is not defined解决:去掉头文件中的 static 关键字声明。原因:参考链接:https://stackoverflow.com/questions/51070909/c-function-has-internal-linkage-but-is-not-defined...原创 2021-02-24 08:50:15 · 5532 阅读 · 0 评论 -
C++面试常见问答题看这三篇文章就够了(下)
前言《C++面试常见问答题看这三篇文章就够了》的上篇和中篇主要是理论知识的问答,下篇的重点则是代码问答题类型。正文1.程序段的执行结果是:#include <iostream>using namespace std; void fun1(int &x) { x++;} void fun2(int x) { x++;} int main() { int abc = 13; fun1(abc); printf("%.原创 2021-02-14 12:10:15 · 1830 阅读 · 1 评论 -
C++面试常见问答题看这三篇文章就够了(中)
构造函数为什么不能声明为虚函数?1 构造一个对象的时候,必须知道对象的实际类型,而虚函数行为是在运行期间确定实际类型的。而在构造一个对象时,由于对象还未构造成功。编译器无法知道对象的实际类型,是该类本身,还是该类的一个派生类,或是更深层次的派生类。无法确定。2 虚函数的执行依赖于虚函数表。而虚函数表在构造函数中进行初始化工作,即初始化vptr,让他指向正确的虚函数表。而在构造对象期间,虚函数表还没有被初 始化,将无法进行。 析构函数执行时先调用派生类的析构函数,其次才调用基类的析构函数。析构函数为.原创 2021-01-13 08:44:28 · 1840 阅读 · 1 评论 -
C++面试常见问答题看这三篇文章就够了(上)
1. 标识符的组成结构标识符一般遵循三个规则:1)由字母、数字和下划线组成。2)开头必须是字母或者下划线。3)不能使用C关键字。2. 动态关联和静态关联的区别通过基类指针调用虚函数的方式是动态关联,通过对象调用虚函数的方式是静态关联。3. 重载(overload)和重写(overried)的区别重载:是指函数名相同,而参数列表不同(或许参数个数不同,或许参数类型不同,或许两者都不同)或返回值不同。重写:是指子类重新定义父类虚函数的方法。和多态真正相关。4. clas.原创 2020-12-02 23:28:43 · 2133 阅读 · 1 评论 -
有没有颠覆你的认知:Main方法一定是入口方法吗?
前言作为一名程序员,一定对main方法非常熟悉,一般我们会认为main方法就是执行程序的入口方法,程序首先执行main方法,真的是这样吗?正文main方法是程序执行的入口方法吗?这里先卖个关子。首先来看一段Go的代码:// Declaration of the main package package main // Importing package import "fmt"// One init() function func init() { fmt.Prin.原创 2020-12-02 22:30:02 · 720 阅读 · 2 评论 -
unique_ptr和make_unique在electron中的使用
C++11标准库提供了两种智能指针,它们的区别在于管理底层指针的方式:shared_ptr允许多个指针指向同一个对象;unique_ptr则“独占”所指向的对象。C++11标准库还定义了一个名为weak_ptr的辅助类,它是一种弱引用,指向shared_ptr所管理的对象。这三种类型都定义在memory头文件中。智能指针是模板类而不是指针。类似vector,智能指针也是模板,当创建一个智能指针时,必须提供额外的信息即指针可以指向的类型。默认初始化的智能指针中保存着一个空指针。智能指针的使用方式与普通指针类似原创 2020-09-19 15:00:56 · 810 阅读 · 0 评论 -
C++之abs()
abs() 方法在C语言中,只对int整型生效,作用是求整型数据的绝对值。头文件:<stdlib.h>abs() 方法在C++语言中,最早的C98版本中,只对double、float、long double类型生效,不支持int类型,作用是求数据的绝对值。从C++11开始,增加了对int整型数据类型的支持。头文件:<cmath.h>代码实例:// cmath's abs example#include <iostream> //..原创 2020-08-28 11:02:53 · 58285 阅读 · 2 评论 -
LeetCode之排布二进制网格的最少交换次数(一千五百三十六)
分析:该题仔细分析后,其实类比成排序问题,求解排序完成需要移动的次数。原创 2020-08-04 23:33:29 · 613 阅读 · 0 评论 -
如何将vectror<char>转换成string(C++)
目录问题解决总结问题今天遇到一个问题,问题是如何将vectror<char>转换成string,编程语言是C++。后来总结发现有两种方法,接下来结合代码看看二者的优劣。解决方法一、直接法如果最终我们拿到了字符向量数组,那么我们可以使用string一个比较少用的构造函数来完成这个转换工作,具体看代码:std::vector<char> vec;std::string str(vec.begin(), vec.end());这样str.原创 2020-07-27 10:56:12 · 8519 阅读 · 0 评论 -
C++中常见的字符串类型转换
1.报错:const std::string' (aka 'const basic_string<char, char_traits<char>, allocator<char> >') to 'ATL::CStringT<wchar_t, ATL::StrTraitATL<wchar_t, ATL::ChTraitsCRT<wchar_t> > >::PCXSTR' (aka 'const wchar_t *') for 1st原创 2020-07-20 20:37:40 · 1571 阅读 · 0 评论 -
对C++中虚拟析构函数默认覆盖的理解
走读webrtc的代码能看到各种风格的代码,看到图1的写法还是可以理解的,但是图2就些疑惑了。图1 图2基类的析构函数通常必须是虚拟的。但是派生类的析构函数呢?在C 11中,我们使用关键字“override”和明确使用默认析构函数的能力。struct Parent{ std::string a; virtual ~Parent() { }};struct Child: public Parent{ std::string b; ~Child() ov...原创 2020-05-22 19:42:38 · 2114 阅读 · 0 评论 -
setw简介
setw(int n)的作用,一般理解成是用来控制输出间隔的,但这只是表象,实际上是用来预设输出宽度的。setw默认右对齐,其余部分自动补空格。还有一些别的特性,直接看代码会更直观,代码:#include <iostream>#include <iomanip>using namespace std;int main(){ cout << ...原创 2019-11-15 10:57:27 · 11413 阅读 · 2 评论 -
std::numeric_limits的使用
std::numeric_limits是C/C++11中的一个模板类,在库编译平台提供基础算术类型的极值等属性信息,取代传统C语言,所采用的预处理常数。比较常用的使用是对于给定的基础类型用来判断在当前系统上的最大值、最小值。下面通过一段程序看看std::numeric_limits是怎么使用的。#include <iostream>#include <cstdlib>...原创 2019-11-14 18:40:34 · 2957 阅读 · 1 评论 -
error: expected ) before numeric constant
优化代码时,遇到了这个问题:/Users/lz/project/app/scripts/android/Project/jni/player_jni.cpp:270:43: error: expected ')' before numeric constant if ((start[1] & (0xC0)) != 0×80) 排查了半天,才发现确实是...原创 2019-05-05 16:18:06 · 6602 阅读 · 0 评论 -
防止头文件被重复引用
防止头文件被重复引用:方法一、使用#ifndef,#define,#endif,防止头文件被重复引用,具体做法如下:#ifndef HEAD_H#define HEAD_H……(头文件内容)#endif方法二、文件最开头使用#pragma once,防止头文件被重复引用,具体做法如下:#pragma once......(头文件内容)原创 2016-01-26 16:41:48 · 1026 阅读 · 0 评论 -
error: format %d expects argument of type int, but argument 5 has type int64_t {aka long int}
error: format '%d' expects argument of type 'int', but argument 5 has type 'int64_t {aka long int}' [-Werror=format=]原因:数据格式化不正确,可能导致在32位和64位机上编译器解释不统一。解决:#include <inttypes.h> printf("%...原创 2019-08-06 13:52:49 · 5027 阅读 · 1 评论 -
strdup和strcpy比较
strdup和strcpy都是字符串复制函数,但是也是有区别的,具体如下:1.strdup不是标准的c函数;strcpy是标准的c函数。2.strdup的参数是一个,即源字符串地址,返回值是目标字符串地址;strcpy的参数是两个,分别是目标字符串地址、源字符串地址。3.strdup会自动分配空间给目标指针,所以可以直接把要复制的内容复制给没有初始化的指针;strcpy的目标指针必须是...原创 2019-06-11 11:37:23 · 1679 阅读 · 0 评论 -
_aligned_free介绍
_aligned_free与free函数类似,也可以用来释放一块动态申请的内存空间。一般,它与_aligned_malloc 、_aligned_offset_malloc成对使用。另外,它的定义在<malloc.h>中,使用时记得包含对应的头文件。...原创 2019-06-05 17:11:11 · 2598 阅读 · 0 评论 -
#pragma region
#pragma region是Visual C++中特有的预处理指令。它可以让你折叠特定的代码块,从而使界面更加清洁,便于编辑其他代码。折叠后的代码块不会影响编译。你也可以随时展开代码块以进行编辑等操作。原创 2017-11-03 15:34:47 · 16453 阅读 · 0 评论 -
动态库与静态库的区别(linux vs windows vs mac)
方法库大体上可以分为两类:静态库和动态库(共享库)。在windows中静态库是以 .lib 为后缀的文件,动态库是以 .dll 为后缀的文件。在linux中静态库是以 .a 为后缀的文件,共享库是以 .so为后缀的文件。 当程序与静态库连接时,库中目标文件所含的所有将被程序使用的函数的机器码被copy到最终的可执行文件中。这就会导致最终生成的可执行代码量相对变多,相当于...原创 2017-11-02 15:19:29 · 1772 阅读 · 1 评论 -
fatal error LNK1169: 找到一个或多个多重定义的符号
今天遇到一种fatal error LNK1169报错的特殊情况,之前一直没有注意。不是一般的常见问题,解决方法可能没有普遍的适用性。先说一下现象,一般情况下C++程序,都会在.h文件中声明方法,在.cpp文件中定义方法,可是一般遇到非常简单的方法就会在.h文件中声明并直接定义了。我一直是这么认为的,而且认为这样做是没有问题的。但是,今天现实给我上了一课,这样的认识是非常局限的,如果这个非常简原创 2017-06-03 10:23:21 · 1594 阅读 · 0 评论 -
vs自带查看动态库dll信息的工具
使用VS的工具dumpbin查看动态库信息原创 2017-06-01 16:42:32 · 20312 阅读 · 3 评论 -
文件版本和产品版本的区别
一般来说,FILEVERSION表示文件版本,PRODUCTVERSION表示产品版本。文件版本,每修改一次增加一次;产品版本,每发布一次增加一次。对于动态库DLL来说,二者可能是不一致的。但是对于主程序EXE来说,二者一般是统一的。原创 2016-01-08 13:15:06 · 5672 阅读 · 0 评论 -
vc6.0常见错误fatal error C1083: Cannot open precompiled header file: ‘Debug/**.pch‘
vc6.0常见错误fatal error C1083: Cannot open precompiled header file: 'Debug/**.pch': No such file or directory在网上搜集了一下,这个错误是预编译文件的设置造成的,于是总结了几种尝试的方法:1)单独编译StdAfx.cpp。2)编译所有(即按Ctrl+F7)。3)在工程-设置-c++原创 2015-12-19 10:19:50 · 21067 阅读 · 15 评论 -
VS与VC的区别
VS与VC的区别原创 2015-12-17 12:44:12 · 3898 阅读 · 0 评论 -
VC++6.0显示cannot compile the file***:no compile tool is associated with the file extension.
当我们使用VC++6.0编译项目时,编译失败,对话框提示:cannot compile the file***:no compile tool is associated with the file extension.解决:关闭当前文档,或者打开一个新的CPP文件即可,注意:有时候重新打开一个点h文件也不行,最好是CPP文件。原创 2015-12-30 18:11:10 · 18794 阅读 · 2 评论 -
viewdebug和winDebug介绍(含下载地址)
1.viewdebug1.1介绍debugview 可以捕获程序中由TRACE(debug版本)和OutputDebugString输出的信息。支持Debug、Release模式编译的程序(即该软件捕获的是exe直接运行时,抛出的信息,而不是Visual Studio调试时的),甚至支持内核程序,而且能够定制各种过滤条件,让你只看到关心的输出信息,而且可以定制高亮显示的内容等等,非常方便。1.2下...原创 2018-04-28 16:34:01 · 9369 阅读 · 1 评论 -
C/C++面试求职者必备
说到w3cshool,想必大家都不陌生,从六年前首次接触,到现在网站排版变化还是非常大的。这不今天逛了逛,发现一个内部的板块说到“20道必须掌握的C++面试题”,因为文章不怎么找,我给大家就摘出来方便大家阅读。另外,我还增加了一些自己认为很有必要掌握的知识点。问1:请用简单的语言告诉我C++ 是什么?答:C++是在C语言的基础上开发的一种面向对象编程语言,应用广泛。C++支持多种编程范式 --面向...原创 2018-05-23 21:08:45 · 1005 阅读 · 2 评论 -
sizeof vs strlen
sizeof和strlen的比较在C++笔试中是很普遍的,平时开发过程中也比较常见,所以熟悉二者的一般区别还是很有必要的。个人觉得,知道以下两点就差不多了:1.sizeof是运算符,也是关键字,但strlen是函数。2.sizeof计算大小包含'\0',strlen计算大小不包含‘\0’。另外,通过两个小例子加深一下大家的理解。实例1:char a[] = "abcdef";cou...原创 2018-06-14 21:42:35 · 608 阅读 · 0 评论 -
原子性操作函数
如果对一个变量进行自加自减操作,一般这样写:int global_count = 0;global_count ++;如果是多线程操作,一般都需要加锁处理:pthread_mutex_t count_lock = PTHREAD_MUTEX_INITIALIZER;pthread_mutex_lock(&count_lock);global_count ++;pth...原创 2019-05-11 19:53:50 · 1536 阅读 · 0 评论 -
JNI DETECTED ERROR IN APPLICATION: input is not valid Modified UTF-8: illegal continuation byte **
出现这个错误的原因是JNIEnv调用NewStringUTF(charStr)时,会校验charStr是否为标准的UTF-8格式字符串。调用顺序:NewStringUTF() -> checkUtfString() -> checkUtfBytes()解决方法有二:方法一、在调用NewStringUTF(charStr)前,对参数charStr做UTF-8校验。方法二、...原创 2019-05-05 17:55:25 · 6249 阅读 · 2 评论 -
error : uninitialized const member in struct ***
声明const成员变量时需要初始化,如果想解决这个问题可以去掉const限制。原创 2019-05-05 17:40:34 · 5651 阅读 · 1 评论 -
error: stray \303 in program
出新这个问题一般就是代码出现了编译器不能识别的特殊符号,原因有很多,具体可以参考报错中的数字,比如本例中的“303”,直接上图吧,自己品味。看出区别了吗?应该是字母x,不是乘号✖️。...原创 2019-05-05 17:21:36 · 3129 阅读 · 0 评论