4、BOOST_STATIC_ASSERT 编译时断言 assert 运行时断言 5、使用PRld64 int64_t 用来表示64位整数,在32位系统中是long long int,...在64位系统中是long int,所以打印int64_t的格式化方法是: printf(“%ld”, value); // 64bit OS printf("%lld", value); // 32bit...当要求使用volatile 声明的变量的值的时候,系统总是重新从它所在的内存读取数据,而不是使用保存在寄存器中的备份。即使它前面的指令刚刚从该处读取过数据,而且读取的数据立刻被保存。...补充:gcc/g++ 一些编译选项 -Wall // 大部分警告 -Wextra // 一些额外的警告 -Werror ...-Wno-unused-parameter // 函数中出现未使用的参数,不给出警告。
大家好,又见面了,我是你们的朋友全栈君。 很早就接触了google C/C++自动化测试框架gtest, 现在偶然用起有时候还需要简单温习下步骤。今天在这里做下简单使用记录。 1....-g -Wall -Wextra -pthread -c \ ...../samples/fun_unittest.cc:6: 警告:不建议使用从字符串常量到‘char*’的转换 g++ -isystem ../include -I.....-g -Wall -Wextra -pthread -c \ .....[ FAILED ] 1 test, listed below: [ FAILED ] fun3.add 1 FAILED TEST gtest测试框架的使用粗略的介绍完了,达到能用的目的
在隐式转换的时候,如果值发生变化,那么结果可能就不是预料中的,所以最好使用显式转换。...打开所有编译告警,并视警告为错误,出现任何警告放弃编译 set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -Wall -Wextra -Werror") 常用警告 GCC...-Wformat 检查标准库函数的使用格式是否正确,比如printf的格式化字符串中的格式符和对应的参数是否匹配 -Wunused-function 对已声明但是未定义的静态函数和未被使用的非内联静态函数发出警告...-Wextra 单单只有-Wall可能还不够严格,GCC还有-Wextra作为补充,包括另外一些没有被-Wall包含的警告类型,譬如: 选项 作用 -Wcast-function-type 当函数被强转为不兼容的函数指针时发出警告...当存在被设置但是未被使用的参数发出警告,需配合-Wall -Wsign-compare 当比较有符号和无符号值时发出警告 配置交叉编译环境常需要的修改 设置默认库和头文件搜索路径 编译默认会从/usr
设置编译选项 add_compile_options(-Wall -Wextra -Wpedantic -Wno-unused-parameter -g) 告警选项: 告警选项 作用描述...-Wall 允许发出gcc提供的所有有用的报警信息 -Wextra 对所有合法但值得怀疑的表达式发出警告 -Werror 把告警信息当做错误信息对待...-pedantic 允许发出ANSI C标准所列的全部警告信息 -w 关闭所有警告(不推荐使用) -Wfatal-errors...也就是代码中不使用绝对地址,而使用相对地址,因此加载器可以将它加载到内存任意位置并执行。如果不使用-fPIC,产生的代码中包含绝对地址。...RelWithDebInfo 该模式会尽量按照Release的模式编译,但仍带有调试信息,是一个在速度和调试信息间的折中选择。
装cygwin 或者mingGW,装gcc工具链,并将cygwin的bin目录加入环境变量PATH中。..."-Wall", // 开启额外警告 "-static-libgcc", // 静态链接 "-...终端”中显示编译信息的策略,可以为always,silent,never "focus": false, "panel": "shared..."-Wall", // 开启额外警告 "-static-libgcc", // 静态链接 //..."-Wall", // 开启额外警告 "-static-libgcc", // 静态链接 "-
Snipaste_2021-05-25_13-06-24.png windows安装包下载地址:windows开发包下载地址 Snipaste_2021-05-25_13-07-42.png Lua官方推荐的方法使用...http://luadist.org/ Snipaste_2021-05-25_18-51-57.png Lua 开发包安装 1、Mac电脑上安装 ➜ Desktop mkdir luadir -- 在桌面上创建一个...编译步骤中遗漏的错误,确保服务的编译正常 [root@localhost lua-5.4.3]# make linux test make[1]: Entering directory `/root/lua...官方可以免费试用,但是也可以百度谷歌找到破解版使用。...command + shift + p,在输入框输入Install Package (第一次输入需要等待链接,几秒钟 )成功后会再次出现输入框,然后输入你想安装的插件,选中,回车,即可安装插件。
按照muduo Github官网README中的说法, 只需要编译muduo库根目录下的build.sh可执行文件即可。...很是纳闷,估计是/usr/local/boost目录不是默认的安装目录所以会导致这个问题吧,最后找到了如下两篇博客: Linux下使用CMake进行编译的时候寻找Boost库 cmake使用boost库...根据简书上的这篇博客Linux下使用CMake进行编译的时候寻找Boost库 ?...所以解决办法很明了了,既然muduo库找不到我安装的boost1.69.0的头文件所在目录,那么我修改一下CMakeLists.txt文件,在find_package(Boost REQUIRED)这句查找...Boost库之前,手动设置boost根目录、头文件、lib库文件所在目录就好了即: 可以在搜索package之前,通过设置一些变量来帮助boost库的查找 BOOST_ROOT
静态分析工具能够在代码未运行的情况下分析源代码,发现代码中的bug。在C/C++程序中,静态分析工具可以发现程序错误,如空指针取消引用、内存泄漏、被零除、整数溢出、越界访问、初始化前使用等。...编译器中的静态分析 编译器的目标是生成可执行文件,所以,他们并不关注静态代码分析。 但是,随着编译器的慢慢完善,在静态分析方面也做得越来越好。...Clang是一个优秀的静态分析器,能够分析代码中潜在的问题。对于上面的问题,GCC 在编译时加上-Wall 和-Wpedantic编译选项也可以分析出bug。...$ gcc -Wall -Wextra -Werror -Wpedantic main.c -o main $ ls main main Clang分析出了其中的一个bug。...$ clang -Wall -Wextra -Werror -Wpedantic -Weverything main.c -o main main.c:8:9: error: variable 'result
Python调用C++代码 今天在研究PyTorch中Tensor的一些操作的时候,发现其底层Tensor的操作都是用C++写的,并使用pybind11进行C++和Python的桥接。...可行方案 其实,方案还是挺多的: Python内置的ctypes接口(可以将C/C++代码编译为动态库,在Python中进行调用) CFFI(提供了一种在Python代码中混合C代码的途径) Cython...(C后端版本的Python实现,建立了Python类型和C语言之间的映射关系,提供了使用Python代码调用C函数库的能力) Boost.Python (提供手动导出C++代码接口的能力供Python...在函数前面需要__declspec(dllexport)申明 int sum(int a, int b) { return a + b; } C代码编译成动态链接库 我使用的是macOS,选择使用...gcc进行编译gcc -Wall -Wextra -O -ansi -pedantic -shared test.c -o test.so 在Python中调用 In [1]: from ctypes
为了实现该工具的正常功能,远程主机需要满足以下条件: 1、在登录时显示“Last login”信息; 2、dd和stty; 3、目标用户使用Bash作为默认Shell; 4、可运行fakessh代码;...mkdir ~/.sshwormcp ssh ~/.sshwormalias ssh='~/.sshworm/ssh' 我们首次执行fakessh时,并不会显示任何内容,工具会执行post-install.c中的代码...musl-libc,或其他的libc,但我不建议大家使用glibc,因为使用glibc编译的代码会非常大。...编译: $ cd server $ make cc -Wall -Wextra -O3 -c net.c -o net.o cc -Wall -Wextra -O3 -c replace.c -o replace.o...cc -Wall -Wextra -O3 -c term.c -o term.o cc -Wall -Wextra -O3 -c main.c -o main.o cc -Wall -Wextra -
GCC / Clang -Wall -Wextra -Wshadow -Wnon-virtual-dtor -pedantic -Wall -Wextra 合理、标准 -Wshadow 如果变量声明覆盖了父上下文中的变量...在可能需要按位操作的地方使用逻辑操作时发出警告(仅在GCC中) -Wnull-dereference 如果检测到空解引用将发出警告(仅在GCC >= 6.0中) -Wuseless-cast 如果执行强制转换到相同的类型...,已隐式应用多个用户定义转换 不建议 /Wall 会对标准库中包含的文件发出警告,有太多额外的警告,因此没什么用。...通用 一开始就设置非常严格的警告,在项目开始后试图提高警告级别可能会很痛苦。 考虑使用将警告视为错误的设置,例如MSVC中的/Wx,以及GCC/Clang中的-Werror。...在对一段代码禁用该警告后,请确保重新启用该警告,没人希望禁用的警告被泄露到其他代码中[82]。 测试 上面提到的CMake有一个用于执行测试的内置框架,请确保使用的任何构建系统都能够执行内置测试。
3.警告Flag 警告标志有助于识别潜在问题、编码错误或代码中存在问题的实践。通过启用警告标志,编译器会对这些情况提供警告,使开发人员能够提高代码质量。...一些常用的警告标志包括: -Wall:该标志启用一套全面的警告,涵盖各种潜在问题。 -Werror:该标志将警告视为错误,使编译器在遇到警告时停止编译过程。...4.预处理器Flag 预处理器标志负责处理源代码中以#开头的指令。这些标志定义宏并控制编译。 一些常用的预处理器标志包括: -D:该标志用于在编译过程中定义宏。...一些常用的杂项标志包括: -std:该标志指定要使用的C语言标准版本。例如,-std=c99选择C99标准。...-pedantic:该标志启用对所选择的C语言标准的严格遵守,对非标准或可疑代码结构提供额外的警告。-Wextra:该标志启用超过-Wall启用的额外警告,提供更全面的代码分析。
最近代码上遇到一些问题,编译的时候不报错,执行的时候才报错,这种代码还是很危险的。 有两个case: 1. format时标记给的不对,比如是个int,但是格式化时用了%s 2....函数应该return true,但是代码里没有实际返回,Android这边报错 "Failed anonymous mmap, out of memory", 记得以前int的时候,没有实际return...这种问题,其实都可以在编译时发现,万能的clang,提供了很多诊断工具,详细列表在这里。...或者有些遇到,但是不希望报错的,可以用“-Wno-error=format”。 但最终还是推荐使用“-Wall -Wextra -Wconversion”保平安
一、源码下载一、环境准备我下载和编译用的是ubuntu20.04系统,之前在win上一直存在问题,甚至在下载环节就出问题,无法通过。...环境中,下载基本不会出现问题,但是时间比较长,我的电脑配置需要30分钟,需要耐心。...source 版本 'RELEASE_8' 低于 -source '9'注: 某些输入文件使用或覆盖了已过时的 API。...注: 有关详细信息, 请使用 -Xlint:deprecation 重新编译。注: 某些输入文件使用了未经检查或不安全的操作。注: 有关详细信息, 请使用 -Xlint:unchecked 重新编译。...2 个警告在编译99%的时候,不断的出现上面警告,最终编译失败,个人猜测是和jdk版本有关,一开始我用的是jdk 11版本,之后我换成jdk1.8,最后编译成功。
一切都在doctest命名空间中(实现细节在一个嵌套的detail命名空间中)。 所有宏都有前缀——默认情况下有些不带前缀,但这是可选的——请参阅配置。...不会产生任何警告,即使是最严格的编译选项(在所有测试的编译器上)。...Clang : -Weverything -pedantic GCC:-Wall -Wextra -pedantic 和 超过35个 其他警告,这些标志不覆盖GCC!——参考这里。...MSVC:/W4 (/Wall太多了—— 如果使用该选项,甚至微软自己的头文件都会产生数千个警告) 命令行无法识别的选项,不会出现错误,并支持与客户机命令行解析进行互操作的前缀。...可以在程序中设置选项,而不是通过argc/ argv从命令行传入。 自己被禁用时不会产生警告。
FATAL_ERROR: 该参数在 cmake 的_2.6_及以后的版本被忽略,在 cmake 的_2.4_及以前的版本,需要指明该参数,使得 cmake 能提示失败而不是一个警告。...可以设置编译器的选项,例如优化级别、警告选项等,例如: add_compile_options(-Wall -Wextra -pedantic -Werror) set(CMAKE_C_FLAGS "$...(-Wall,-Wextra,-pedantic)和将警告视为错误的选项(-Werror)。...5、添加全局宏定义 可以添加全局的宏定义,使用 add_definitions 可以增加全局的宏定义,这样在源码中可以判断宏定义实现不同的代码逻辑。...LANGUAGES C CXX) set(CMAKE_C_STANDARD 99) set(CMAKE_CXX_STANDARD 11) add_compile_options(-Wall -Wextra
:将多个原文件一次性传递给汇编器 -g:包含调试信息 -I:指定include包含文件的搜索目录 -o:输出成指定文件名 -v:详细输出编译过程中所采用的每一个选项 -ggdb:在可执行文件中包含GDB...-Werror:不区分警告和错误,遇到任何警告都停止编译 -Wall:开启大部分警告提示 -Wshadow:某语句块作用域变量与更大作用域的另一变量同名时发出警告(次警告未包含在-Wall选项中,需单独开启...) -Wextra:对所有合法但值得怀疑的表达式发出警告 -O0:关闭所有优化选项 -O1:第一级别优化,使用此选项可使可执行文件更小,运行更快,并不会增加太多编译时间,可以简写为-O -O2:第二级别优化...,采用了几乎所有优化技术,使用此选项会延长编译时间 -O3:第三级别优化,在-O2的基础上增加了产生inline函数、使用寄存器等优化技术 -O5:此选项类似于-O2,作用是优化所占用的空间,但不会进行性能优化...配合-E选项使用 -P:告诉预处理器不要产生#inline命令。配合-E选项使用 -static:在支持动态链接的系统上,阻止链接共享库。
之前在ubuntu14下实现了Caffe编译(参见去年写的博客 《 Ubuntu14:cmake生成Makefile编译caffe过程(OpenBLAS/CPU only)》)。...库 #sudo apt-get install libatlas-base-dev //BLAS如使用OpenBLAS,可不安装 sudo apt-get install libopenblas-dev...//BLAS如使用atlas,可不安装 sudo apt-get install libgflags-dev libgoogle-glog-dev liblmdb-dev sudo apt-get...用于指定CUDA编译器(nvcc)的编译选项,如果不指定--Wno-deprecated-gpu-targets选项则在编译Caffe时会产生如下编译警告 nvcc warning : The ‘compute...当然也可以在cmake-gui中,如下图搜索NVCC,在CUDA_NVCC_FLAGS中添加--Wno-deprecated-gpu-targets ?
当你希望在 Map 中不使用 String 为 Key,那么你需要使用 MessagePackKeySerializer 来为 key 进行序列化。...本测试方法,可以在 https://github.com/cwiki-us-demo/serialize-deserialize-demo-java/blob/master/src/test/java/
领取专属 10元无门槛券
手把手带您无忧上云