clang

clang-format: always break if params don't fit?

荒凉一梦 提交于 2020-08-22 07:20:42
问题 I can't figure out if it's possible to configure clang-format to always break if parameters don't fit, ie: // Try this first: SomeCall(aaa, bbb, ccc); // If doesn't fit, try this: SomeCall( aaa, bbb, ccc); // If still doesn't fit, do NOT try this: SomeCall(aaa, bbb, ccc); // and NOT this: SomeCall(aaa, bbb, ccc); // but immediately do this: SomeCall( aaa, bbb, ccc); So far I've concluded that it's not possible to do this with clang-format 3.4. Is it correct? 回答1: In newer version of clang

How do I specify a clang-format file?

流过昼夜 提交于 2020-08-22 07:13:53
问题 I just built clang 5.0.0 on a Redhat 6 machine and tried to run clang-format. I'm unable to get the -style option to read in a style file. Here's an example of a set of commands that I think should work: ./clang-format -style=llvm -dump-config > .llvm-format ./clang-format -style=.llvm-format ~/myFile.cc When I run this command I get the following error: Invalid value for -style It appears to find and use .clang-format when placed in a parent directory as expect. The built-in types also work:

How do I specify a clang-format file?

有些话、适合烂在心里 提交于 2020-08-22 07:13:29
问题 I just built clang 5.0.0 on a Redhat 6 machine and tried to run clang-format. I'm unable to get the -style option to read in a style file. Here's an example of a set of commands that I think should work: ./clang-format -style=llvm -dump-config > .llvm-format ./clang-format -style=.llvm-format ~/myFile.cc When I run this command I get the following error: Invalid value for -style It appears to find and use .clang-format when placed in a parent directory as expect. The built-in types also work:

将32位循环计数器替换为64位会在Intel CPU上使用_mm_popcnt_u64引起疯狂的性能偏差

匆匆过客 提交于 2020-08-20 05:28:22
问题: I was looking for the fastest way to popcount large arrays of data. 我一直在寻找最快的方法来 popcount 大量数据的数量。 I encountered a very weird effect: Changing the loop variable from unsigned to uint64_t made the performance drop by 50% on my PC. 我遇到了一个 非常奇怪的 效果:将循环变量从 unsigned 更改为 uint64_t 使PC上的性能下降了50%。 The Benchmark 基准测试 #include <iostream> #include <chrono> #include <x86intrin.h> int main(int argc, char* argv[]) { using namespace std; if (argc != 2) { cerr << "usage: array_size in MB" << endl; return -1; } uint64_t size = atol(argv[1])<<20; uint64_t* buffer = new uint64_t[size/8]; char* charbuffer =

How to generate godbolt like clean assembly locally?

倖福魔咒の 提交于 2020-08-19 07:28:13
问题 I want to generate clean assembly like Compiler Explorer locally. Note that, I read How to remove “noise” from GCC/clang assembly output? before attempting this. The output using that method isn't as clean or dense compared to godbolt and still has a lot of asm directives and unused labels in it. How can I get clean assembly output without any unused labels or directives ? 回答1: A while ago, I needed something like this locally so I wrote a small tool to make the asm readable. It attempts to

面试系列之C++的对象布局【建议收藏】

痴心易碎 提交于 2020-08-17 17:08:14
我们都知道C++多态是通过虚函数表来实现的,那具体是什么样的大家清楚吗?开篇依旧提出来几个问题: 普通类对象是什么布局? 带虚函数的类对象是什么布局? 单继承下不含有覆盖函数的类对象是什么布局? 单继承下含有覆盖函数的类对象是什么布局? 多继承下不含有覆盖函数的类对象是什么布局? 多继承下含有覆盖函数的类对象的是什么布局? 多继承中不同的继承顺序产生的类对象布局相同吗? 虚继承的类对象是什么布局? 菱形继承下类对象是什么布局? 为什么要引入虚继承? 为什么虚函数表中有两个析构函数? 为什么构造函数不能是虚函数? 为什么基类析构函数需要是虚函数? 要回答上述问题我们首先需要了解什么是多态。 什么是多态 多态可以分为编译时多态和运行时多态。 编译时多态:基于模板和函数重载方式,在编译时就已经确定对象的行为,也称为静态绑定。 运行时多态:面向对象的一大特色,通过继承方式使得程序在运行时才会确定相应调用的方法,也称为动态绑定,它的实现主要是依赖于传说中的虚函数表。 如何查看对象的布局 在gcc中可以使用如下命令查看对象布局: g++ -fdump-class-hierarchy model.cc后查看生成的文件 在clang中可以使用如下命令: clang -Xclang -fdump-record-layouts -stdlib=libc++ -c model.cc // 查看对象布局

SwiftUI

余生长醉 提交于 2020-08-14 13:04:37
简介 消息推送相信在很多人的眼里都不陌生了吧?像即时聊天微信,好友发信息给你时会在顶部弹下小窗口提醒你。也像是在影院APP预订了电影票,在开场前一小时你也会收到提醒。这类推送是需要经过后端发送请求的,需要服务器发送推送请求,又或者使用如极光推送等第三方渠道。 那么如果我们的APP不需要连网呢?这是不是就不能使用消息推送了?不是的,苹果还提供给我们本地消息通知服务,即便APP不连网也能使用,功能也很强大可靠。本地时钟的应用场景很广泛,例如手机上的时钟、日历等。 那么你知道如何去实现它吗?这篇文章将告知你答案,同时以两个小案例作为例子,以便更好地去理解它。 笔者环境 Xcode - Version 11.5 (11E608c) Swift - version 5.2.4 (swiftlang-1103.0.32.9 clang-1103.0.32.53). 权限获取 UserNotifications 是 iOS10 推出来的框架,因此你只能在 10 或以上的版本使用它。推送服务和以往一样,也是需要用户授权的,当用户同意后才能正常注册消息通知,当用户拒绝时应该引导用户去打开APP的通知权限。利用 requestAuthorization 方法弹出并获取通知权限,接收的参数 options 是具体的授权选项,一般有弹窗、未读数量图标和声音即可,并在回调闭包中可以获取授权结果和错误。

写Java这么久,JDK源码编译过没?编译JDK源码踩坑纪实

假如想象 提交于 2020-08-12 06:46:41
好奇害死羊 很多小伙伴们做 Java 开发,天天写 Java 代码,肯定离不开 Java 基础环境: JDK ,毕竟我们写好的 Java 代码也是跑在 JVM 虚拟机上。 一般来说,我们学 Java 之前,第一步就是安装 JDK 环境。这个简单啊,我们一般直接把 JDK 从官网下载下来,安装完成,配个环境变量就可以愉快地使用了。 不过话说回来,对于这个天天使用的东西,我们难道不好奇这玩意儿它到底是怎么由源码编译出来的吗? 带着这个原始的疑问,今天准备大干一场,自己动动呆萌的小手,来编译一个属于自己的 JDK 吧! 对了,本文在开源项目: https://github.com/hansonwang99/JavaCollection 中已收录,包含自学编程路线、面试题集合/面经、及系列技术文章等,资源持续更新中... 还有个待填的坑 记得之前不是出过一期关于 《JDK源码阅读环境搭建》 相关的视频以及文章嘛,细心的小伙伴,可能会发现一个 很实际的问题 : 我们将 src.zip 包里的 JDK 源码解压出来,关联到这份源码之后,调试时是可以进,但是我们在加注释的时候却只能在 行尾添加 ,并不能改变原代码的行结构。换句话说,如果在源码中加了跨行的多行注释,则 debug 调试的时候就会出现当前行的 运行错位 问题,这个有点尴尬了。 当然那个视频的评论区,的确也有几个小伙伴提了这个问题:

离线编译chromium 59.0.3071.104,方法适合任意版本

瘦欲@ 提交于 2020-08-11 04:59:08
离线编译chromium 59.0.3071.104,方法适合任意版本 离线编译任意版本chromium 准备 修改 运行&编译 可能出现的问题及解决 离线编译任意版本chromium 没错, **离线 **且 **任意版本 ** chromium。离线还是要下载必要的代码的,但是可以分步进行,极大的提高编译成功率。 准备 chromium在墙内的git地址可以直接访问 https://github.com/chromium/chromium, 但是稳定的tag限于73以后,73以前的tag代码可以从 https://chromium.googlesource.com/chromium/src/+refs 下载指定的版本。 我以59.0.3071.104为例,下载好tar包:chromium-59.0.3071.104.tar.xz,大小500多M,直接翻墙下载很稳定,或者直接下载 源码离线包 下载最新depot_tools 见 http://commondatastorage.googleapis.com/chrome-infra-docs/flat/depot_tools/docs/html/depot_tools_tutorial.html#_setting_up 安装vs2015社区版,注意必须是update3,设置好INCLUDE环境变量: C:\Program

如何成为一名iOS开发高手

倾然丶 夕夏残阳落幕 提交于 2020-08-10 19:55:00
“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点 这里 可以跳转到教程。” 作为当前两大主流移动操作系统之一, iOS 伴随着iPhone的风靡而走向了全球。当前的移动App种类繁多,足以让人眼花缭乱。因此,不管大家从事何种产品的开发,都应该或多或少地了解一些iOS开发相关的知识。那么,iOS开发的知识体系是怎样的?如何进阶成为一位iOS开发的高手?带着这种种的疑问,我学习了 极客时间 App 上的《 iOS 开发高手课 》专栏。本专栏作者 戴铭 老师是前滴滴出行技术专家,有着丰富的iOS开发和实践经验。 通过对本专栏的学习,我对iOS开发有了全面的了解(虽然还不足以成为一位高手)。在这篇文章中,我分享一下自己的学习总结,供各位想成为iOS开发高手的朋友参考。 专栏主要内容 作者在开篇词中提到,在2008年7月的WWDC苹果全球开发者大会上,苹果宣布App Store正式对外开放,这也意味着属于开发者的移动互联网时代真正开始了。从技术角度看,这些年来移动开发领域相继诞生了组件化、热修复、动态化、大前端、Flutter、小程序等热门技术,推动着iOS开发者不断地学习新技术,同时也让App开发变得越来越容易。作者认为,任何一个领域其实都和移动领域一样,从小型到大型,从个人到团队