在做算法部署的过程中,我们一般都是用C++开发,主要原因是C++的高效性,而构建维护一个大型C++工程的过程中,如何管理不同子模块之间的依赖、外部依赖库、头文件和源文件如何隔离、编译的时候又该如何相互依赖这些问题,直接用Makefile实现是比较麻烦的。这个时候,CMake的优势就显现出来了,
对于字符数组与字符指针: 1. 以字符串形式出现的,编译器都会为该字符串自动添加一个0作为结束符,如在代码中写"abc",那么编译器帮你存储的是"abc\0". 2. 字符串直接量作为字符指针的初始值 "hello"是一个字符串直接量,编译器将其作为const char*处理,与之相关联的内存空间位于内存
1. 构造 构造函数的调用 T t(1,2); // 调用 T(int ,int) T t2 = (1,2); // 调用 T(int) T t3 = 1; // 调用 T(int) T t3 = T(1); // 调用 T(int) 构造匿名对象,并将 匿名对象 和符号 t3绑定 T t4 = t3; // 调用 T(T&) T t5(t4); // 调用 T(T&) void func(T t); fu
1. 引用 1.1 本质 引用的本质是指针 int &a = b; a = 10; // 编译器会处理为 int const *a = &b; *a = 10; 由于引用,所以可以链式编程,即返回引用。 1.2 引用和指针 引用用于替换一重指针 没有引用的引用,没有指向引用的指针, 有对指针进行引用。 int *p; int *(&a) = p; 1.3 引用
extern是什么及其作用 extern是c++引入的一个关键字,它可以应用于一个全局变量,函数或模板声明,说明该符号具有外部链接(external linkage)属性。也就是说,这个符号在别处定义。一般而言,C++全局变量的作用范围仅限于当前的文件,但同时C++也支持分离式编译,允许将程序分割为若干个文
test.cpp: In function ‘int main()’: test.cpp:22:8: error: ‘fk’ does not name a type auto fk = std::bind(func, std::placeholders::_1, 90); ^ test.cpp:23:20: error: ‘fk’ was not declared in this scope std::cout << fk(1) << endl; 使用std::bind时出现的b
新生赛D题贪心一直WA而又debug不出来,只能用对拍拍一下子 对拍的基本思路:有正确程序/小范围正确程序right.cpp, 你的WA程序wrong.cpp, 随机数生成测试的程序test.cpp三个程序 test.cpp: srand(time(0)) 首先选定时间作为随机数种子 然后用随机数生成序列 #include <bits/stdc++.h>
这个项目是我从上clone下来的一个视频播放器,作者提供了Makefile,但是项目结构比较乱,所以我把Makefile删了,并调整了项目结构。 项目重构 项目作者将.cpp文件和.h文件混在一起,但提供了一个Makefile。我直接把Makefile删掉了,在Clion上自己编写CMakeLists.txt来构建项目。 重构后的项目
VS2019 开发CMake项目 不再打酱油 控制理论与控制工程硕士,软件工程师。 14 人赞同了该文章 前几天下载了VS2019,并安装,惊喜的发现,VS2019中集成了CMake。 这下好了,可以在VS中开发和调试项目了。 对于没有使用过CMake的小伙伴来说,简直没有更方便好用的了。
之前学习C语言的时候都是用IDE类似CodeBlocks的工具写完直接编译运行的,今天突然心血来潮,自己下一个编译器,在命令行下,编译运行C++程序,了解一下编译过程。 一.安装编译器 首先你需要下载一个编译器,我选择的是GNU的mingw,附上下载地址https://sourceforge.net
1.vscode安装 Visual studio code是微软发布的一个运行于 Mac OS X、Windows和 Linux 之上的,针对于编写现代 Web 和云应用的跨平台源代码编辑器。安装方式是从vscode官网下载.deb文件,然后双击该文件会打开软件中心进行安装。安装方法.png安装完毕后即可打开vscode,主界面如
c++ 是个好玩意儿, 但是嘞,vs可能因为各种相互引用而造成各种重复定义灾难, 就比如 C 错误error C2011:类型重定义 这种网上介绍的都是 加 #pragma once 或者加宏定义 巴拉巴拉 这种大众化的解决方法,但是问题是有时候,在系统中某些 .h中需要,某些不需要时候,咋整, 这
持续更新中。。。 咱也不会太高深的,就随便记一些常用的就好。 虚拟机软件为 Virtual Box。 快捷键 Ctrl+Alt+t 打开终端。 编译相关命令 无限栈,这条命令单独输入。 ulimit -s unlimited 编译 \(code.cpp\) 为 \(test\) 可执行文件,注意 Linux 下的可执行文件不像 Windows 有 .exe
gcc xxx.cpp究竟经历了什么? 大家好,我是东北码农。 今天我们深入探索一下,一次gcc命令背后都进行了哪些工作。 写一个简单的程序,比较4和5 // xxx.cpp #include <stdio.h> #define Max(x,y) ((x) > (y) ? (x) : (y)) int a1 = 4; int a2 = 5; int main() { int x = Max(
Visibility可见性 in cpp 基本概念 c++中有三个基础的可见修饰符(访问修饰符):private,protected,public private:"只有"基类**(其实不止基类,因为还有一个东西叫做友元(friend))可以访问这些变量 friend是一个关键词,它可以把其他类或者函数标记为当前类的友元(friend),友元的意思就是可
其实吧,这玩意,网上教程特别多,但是都有问题, 很多细节说得不清不楚,结果按照教程根本无法完整地安装上, 所以,这里还是重新整理一下 CodeQL 的安装过程。 1: 下载 CodeQL ,地址:https://github.com/github/codeql-cli-binaries cli,地址,我下载的是当前时刻的最新版:https://github.com/git
预编译头的使用与理解 //预编译头 #include "pch.h" 从cpp文件的编译开始说起,头文件是通过#include进行包含的,而#include的作用呢也就是将内容全部复制到相应的位置。 编译的第一个阶段,预处理阶段就是会处理这些#include命令,将代码全部都复制到相应的位置,这也就是为什么需要防卫
demo文件夹下 1、build文件夹 2、src文件夹 3、SwapInt文件夹 4、CMakeLists.txt CMakeLists.txt 内容为: cmake_minimum_required(VERSION 3.0) project(demo) add_subdirectory(./SwapInt) add_subdirectory(./src) src文件夹下有main.cpp和CMakeLists.txt mai
1、版本选择 建议使用yaml-cpp-0.6.0这个版本。它有以下特点: 1)只需要c++11 2)去掉对boost等其他的依赖,干净 下载链接:https://github.com/jbeder/yaml-cpp/releases/tag/yaml-cpp-0.6.0 2、编译和安装 将yaml-cpp装在指定目录下,工程下有cmakelists.txt文件,新建build,然后cmake cmak
头文件: #include <dlfcn.h> 函数定义: void * dlopen( const char * pathname, int mode); mode: RTLD_LAZY 暂缓决定,等有需要时再解出符号 RTLD_NOW 立即决定,返回前解除所有未决定的符号。 RTLD_LOCAL RTLD_GLOBAL 允许导出符号 RTLD_GROUP RTLD_WORLD 返回
单个源文件生成可执行程序 下面是一个保存在文件 helloworld.cpp 中一个简单的 C++ 程序的代码: 单个源文件生成可执行程序 /* helloworld.cpp */ #include <iostream> int main(int argc,char *argv[]) { std::cout << "hello, world" << std::endl; return(0); } 程序
1.多个cpp文件在同一级目录 参考:https://jingyan.baidu.com/article/2f9b480d7ceb3d01ca6cc224.html 此时可通过修改Code Runner的命令参数来编译。 Code Runner右键 扩展设置,打开setting.json,如图修改为*.cpp,表示编译所有cpp文件。 这样操作只能编译所有cpp文件在同一目录下,对
假设您将 imgui 下载到一个名为 $IMGUI_DIR并且包含您的主要功能的文件是 main.cpp,您的编译命令行应如下所示:(\ 只是用来分解命令) g++ main.cpp -o main $IMGUI_DIR/imgui*.cpp $IMGUI_DIR/backends/imgui_impl_glfw.cpp $IMGUI_DIR/backends/imgui_impl_opengl3.cpp -I $IM
cppcheck是一个静态代码检测工具,用来对C/C++代码进行检测 首先我们要先建立一个C/C++测试文件 test.cpp #include<stdio> int main(){ int a[10]; a[11] = 10 / 0; return 0; } 这个文件建议你直接放在桌面上,比较方便 然后打开windows命令行窗口 打开之后会弹出一个小黑框,类
总的来说,extern的含义就是“外部的”,有两个用法。 一是当变量还没定义时,用来告诉编译器,这里只声明这个变量,而不去定义它。即告诉编译器,这个变量是“外部的”定义,不是这儿定义的,在这儿只是声明一下。 二是当变量已经定义了,用在变量定义的前面,那么它的意思就是告诉编译器,这个变量不