V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX  ›  amiwrong123  ›  全部回复第 9 页 / 共 37 页
回复总数  725
1 ... 5  6  7  8  9  10  11  12  13  14 ... 37  
2022-03-23 22:15:45 +08:00
回复了 amiwrong123 创建的主题 Android 自己编译 Android 源码烧写到手机里,需要做什么准备工作?
@gam2046 #6
谢谢回答。但为什么推荐 开发板而不是手机,我有点没懂,因为我感觉不是手机的话,你就没测试一些 app 了,可能也没法去使用 audio 子系统了。(可能我的理解有点肤浅,见谅)

另外你说的 vndk ,我应该也是需要学习的,因为目前处于 车载安卓 framework 开发 行业。能先把 framework 学习明白了就很不错了。

不过好像虚拟机也是不错的选择。

目前对安卓 framework 的学习还是有点迷茫,对 AMS 、PMS 、WMS 之类的服务也没有接触到,所以我觉得 可以写个简单 app (比如我会使用到 activity )来从使用的方式来理解一下,也是找一下 自顶向下 理解的感觉。
2022-03-23 21:11:01 +08:00
回复了 amiwrong123 创建的主题 Android 自己编译 Android 源码烧写到手机里,需要做什么准备工作?
@0o0O0o0O0o #2
谢谢,所以我只能选择 Nexus and Pixel 了呗。网页里只有这两个
2022-03-12 21:50:39 +08:00
回复了 amiwrong123 创建的主题 C++ 还能这样定义结构体数组的?
@ho121 #1
好吧,少见多怪了。确实在 http://cpp.sh/ 能编译通过。但放到 vs 上编译就不过。
2022-03-10 11:20:31 +08:00
回复了 amiwrong123 创建的主题 程序员 请问 安卓 framework 开发 属于一个好方向吗?
@thinkfeed #1
做 app 应用开发确实是 地狱级的。framework 开发的话,领域要专精一点,但职位也少😂
2022-03-08 21:59:51 +08:00
回复了 amiwrong123 创建的主题 C++ c++ lambda 表达式里 为什么值捕获的局部变量无法修改?
另外, 楼上的代码是在 cppinsights 的 C++14 上执行的哈
2022-03-08 21:56:14 +08:00
回复了 amiwrong123 创建的主题 C++ c++ lambda 表达式里 为什么值捕获的局部变量无法修改?
@elfive #1
@codehz #2
@missdeer #3
@victorbian #5
@dangyuluo #6
@dcsuibian #8

各位大佬,问个问题。
https://cppinsights.io/s/69a816df
就是如上这个代码,为什么我看 main 函数里生成的 local class 里,有这么定义的 Member templates:
```
template<class ... type_parameter_0_0>
inline auto operator()(type_parameter_0_0... param) const
{
print(param...);
}
```
但实际上,local class 不能有 Member templates ( https://zh.cppreference.com/w/cpp/language/member_template 这里有说,你把 右边的代码放进 vs 也是编译不能通过)。
所以,为什么实际生成的代码 违反了 invalid declaration of member template in local class ?

另外,之所以还需要 void print() {}这个函数定义,是不是因为:最后一次调用 void print(const First& first, Rest &&... args)时,第二个参数 args 实际上已经是 void ,所以接着又会调用到 void print() {}里面?(不知道我这么解释对不对,所以不对,请帮忙用正确的术语描述一下😂)
2022-03-06 11:10:57 +08:00
回复了 amiwrong123 创建的主题 C++ c++ lambda 表达式里 为什么值捕获的局部变量无法修改?
@elfive #1
是的,改成这样就可以编译通过。但我想知道,按值捕获的 lambda 表达式到底 实际上生成了什么样子的匿名结构体实例(然后才会造成,无法修改 按值捕获的变量)。
2022-02-10 13:50:08 +08:00
回复了 amiwrong123 创建的主题 问与答 闲鱼现场交易二手打印机,怎么验机?
@123jiayue
可以自动双面的 hp2055d.hp1606d ,老哥觉得怎么样。虽然能自动双面,但可能会有更多问题么
2022-02-10 09:50:49 +08:00
回复了 amiwrong123 创建的主题 问与答 闲鱼现场交易二手打印机,怎么验机?
@123jiayue #4
12A 硒鼓的 hp 打印机都没有自动打印功能。不过好像放弃自动双面也没关系,只是稍微麻烦点(就是自己手动再放一遍纸)。

>直接打印一张全黑的就知道哪里有没有问题
对哈,就可以看掉粉不了呗
2022-02-10 09:46:14 +08:00
回复了 amiwrong123 创建的主题 问与答 闲鱼现场交易二手打印机,怎么验机?
@Mac #3
自己用,每个月都要打印。那我就 直接拼多多买个二手的 得了
2022-02-10 08:50:21 +08:00
回复了 amiwrong123 创建的主题 问与答 闲鱼现场交易二手打印机,怎么验机?
@thedrwu
确实没想到,扫描仪能够单独买。可能这个拼多多上也很多
2022-01-30 18:03:40 +08:00
回复了 amiwrong123 创建的主题 C++ 项目中这样去隐藏类的真正实现 是种好的做法吗?
@GPIO #3
之所以一定要用`class ModuleA : public ModuleBase{};`这样的继承,而不用组合。是因为:
```cpp
class ModuleBase
{
ModuleBase();
ModuleBase(ModuleBase* _impl);
virtual ~ModuleBase() {}

//这三个函数都需要每个模块,自己去实现的
virtual void onTimer(int timerId) {};//启动定时器后,之后会异步调用到的函数
virtual void onStart() {};//模块初始化
virtual void onStop() {};

android::sp<ModuleBase> impl;
};
```
ModuleBase 有三个虚函数是默认实现,需要每个模块去重写。比如 ModuleA 去重写 onStart ,实现自己模块需要初始化的事情。所以各个模块都需要实现 onStart 这个函数实现。会由一个线程分别调用 ModuleA 、ModuleB 、ModuleC…… 的 onStart (调用的时候 使用到了多态,通过 ModuleBase 指针来调用 ModuleA 的实现)。
2022-01-30 16:40:36 +08:00
回复了 amiwrong123 创建的主题 C++ 项目中这样去隐藏类的真正实现 是种好的做法吗?
![]( https://i.bmp.ovh/imgs/2022/01/8971e3381336fb2c.png)
这个图才是对的,下面的是 ModuleBase 的子类。
2022-01-30 16:30:12 +08:00
回复了 amiwrong123 创建的主题 C++ 项目中这样去隐藏类的真正实现 是种好的做法吗?
![]( https://i.bmp.ovh/imgs/2022/01/b278977e8b169435.png)
我画了个图,希望能方便理解😂
2022-01-28 14:58:37 +08:00
回复了 amiwrong123 创建的主题 C++ 万能引用进行重载的替代方案:标签派发的疑问?
@dangyuluo #5
目前没有项目驱动。第一份工作是干的 Android framework 开发,但安卓没学到太多,c++当时也没好好学。现在第二份工作基本没用到 c++(也不是用的 java ,反正工作内容不太喜欢),最近想跳槽。
之前花了很多功夫研究 java ,想转 java 方向,但没成功(也不算白学,安卓 framework 开发也会写 java )。
最近终于下定决心 走 Android framework 开发或者 c++开发了,这两个都对 c++有要求。个人有一定 c++基础,但感觉知识很不系统,所以最近在好好看一遍。
2022-01-28 13:15:31 +08:00
回复了 amiwrong123 创建的主题 C++ 万能引用进行重载的替代方案:标签派发的疑问?
@dangyuluo #2
谢谢哥们提醒,这两天发帖确实有点心急了。其实发帖前,我也是尽量去看书了(手头目前有这几本 c++经典书籍,c++ primer ,effctive c++, effctive c++more, 深入探索 c++对象模型,effective modern c++,c++编程思想。编程思想 900 多页,哎,我留到最后慢慢看吧),还有看网上的资料,比如有 www.cplusplus.comhttps://github.com/isocpp/CppCoreGuidelines/blob/master/CppCoreGuidelines.md https://www.cprogramming.com/tutorial/lesson1.html ,还有网上的一大堆博客。( cplusplus 是个好资料,但对于现在的我来说,只适合浅尝辄止)( PS:资料太多感觉自己要迷失在知识的海洋里了😂)

类似“知识的诅咒”,有时候感觉自己会受到“没有知识的诅咒”,就是一个问题摆在我面前,我甚至都不知道该去搜素什么关键词来解答自己的问题(比如复制消除、rule of five 。当然,就算按照“定义了移动构造函数,会导致赋值操作符被删除”来搜索应该也能搜到 rule of five ,但过程可能会很曲折,当然这可能也和搜索技巧有关)。反正这种就很尴尬,当然这也与我 资料看得太少有关。

总之,我会尽量多查阅资料后再发帖的。
2022-01-27 23:25:44 +08:00
回复了 amiwrong123 创建的主题 C++ std::move 的实现使用到了万能引用?
@zzxxisme #1
@jackchenly #6
@littlewing #7
```cpp
#include <iostream>
using namespace std;

class A {};

A returnTemp() { return A(); }

void test(const A& x) { cout << "left" << endl; }

void test(A&& x) { cout << "right" << endl; }

int main()
{
auto&& c = returnTemp();//万能引用,推断为 A&&
test(std::move(c));

return 0;
}

```
auto&& c 这里也是万能引用,按照万能引用的说法,returnTemp 函数返回一个 A 类型,A 类型经过万能引用推导,应该也是 A 类型呀?
但是我经过了 vs2019 debug 后,发现 c 的类型为 A&&,这是为什么呀?
2022-01-27 10:23:24 +08:00
回复了 amiwrong123 创建的主题 C++ std::move 的实现使用到了万能引用?
@zzxxisme
在 vs2019 里看了一下,确实 std::move 就只有一个实现
2022-01-27 00:35:28 +08:00
回复了 amiwrong123 创建的主题 C++ std::move 的实现使用到了万能引用?
@zzxxisme #1
所以,std::move 只有这一个实现也能正常工作,因为它什么类型都可以接,是吧。

附言里我加的这个问题,为什么有了万能引用版本的函数,还能调用到左值引用版本的函数呀?有点不理解了,老哥

>std::move 加一个 constexpr 并不意味着返回值一定要加 const
constexpr int fun() {
return 1;
}

int main()
{
int a = fun();
}
上面这个程序是不是就是你说的意思? constexpr 函数可以赋值给 constexpr 标识符,也可以赋值非常量的标识符(如上程序)。
2022-01-25 00:41:05 +08:00
回复了 amiwrong123 创建的主题 C++ c++函数返回临时变量和局部变量,有什么区别?
@statumer #8
> 现在你写的第一种是标准要求的 guaranteed copy elision 了,满足 copy elision 规则所以只调用默认构造函数(并不是两次优化)。
那是不是也可以理解为 有两次 copy elision ,return 时一次,初始化变量时一次。

>你写的第三种应该是不合法的,A()是临时对象会被分配到栈上,returnValue_2 返回了一个栈上对象的引用。严重时会导致段错误。
我记得不是有一种,引用可以延长临时变量生命周期的东西?这样是不是就是合法的 了。

另外,看 cppreference 总感觉有些话看不懂:
>即使复制 /移动构造函数和析构函数拥有可观察的副作用
这句啥意思阿,啥叫可观察的副作用😂

struct C { /* ... */ };
C f();
struct D;
D g();
struct D : C {
D() : C(f()) { } // 初始化基类子对象时无消除
D(int) : D(g()) { } // 无消除,因为正在初始化的 D 对象可能是某个其他类的基类子对象
};
>无消除,因为正在初始化的 D 对象可能是某个其他类的基类子对象
它是说 D(g())这里吗,这里看起来是调用了一个 委托构造函数,正在初始化的 D 对象怎么可能是某个其他类的基类子对象呢?( D 也没有派生类阿。。)
1 ... 5  6  7  8  9  10  11  12  13  14 ... 37  
关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2166 人在线   最高记录 6679   ·     Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 · 25ms · UTC 11:37 · PVG 19:37 · LAX 04:37 · JFK 07:37
Developed with CodeLauncher
♥ Do have faith in what you're doing.