C++——Function Style Cast 有歧义

#include <iostream>#include <string>using namespace std; struct Print { template<typename T> Print(T t){ cout<<(t+=10); } }; struct S { S(int a){ cout << a << endl; }; }; void foo(double a) { S w(int(a)); // function declaration // S x(int()); // function declaration S y((int(a))); // object declaration S yy((int)a); // object declaration S z = int(a); // object declaration } template <class T> struct X {}; template <int N> struct Y {}; X<int()> a; // type-id X<int(1)> b; // expression (ill-formed) Y<int()> c; // type-id (ill-formed) Y<int(1)> d; // expression void foo(signed char a) { sizeof(int()); // type-id (ill-formed) sizeof(int(a)); // expression sizeof(int(unsigned(a))); // type-id (ill-formed) (int())+1; // type-id (ill-formed) (int(a))+1; // expression (int(unsigned(a)))+1; // type-id (ill-formed) } int main() { // 这句为什么是一句函数声明而不是变量创建? double a = 3....

February 21, 2024 · 1 min · Rick Cui

Ubuntu 升级 GCC 版本

GCC 源码网址 https://ftp.gnu.org/gnu/gcc/ 源码安装参考这里 添加相应的源 sudo add-apt-repository ppa:ubuntu-toolchain-r/test 如果提示 add-apt-repository: command not found,需要安装 sudo apt-get install software-properties-common 更新软件源 sudo apt-get update 安装指定版本的 gcc sudo apt-get install gcc-9 查看 gcc find / -name "gcc*" dpkg -l | grep gcc 指定默认使用的 gcc 版本 通过 update-alternatives 建立文件关联,如果安装了同一个软件的不同版本,可以使用 update-alternatives 命令设置默认使用哪个 首先要让系统知道我们安装了多个版本的 gcc # 命令最后的 20 和 50 是优先级,如果使用 auto 选择模式,系统将默认使用优先级高的 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-7 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-9 50 查看 gcc 版本...

January 8, 2024 · 1 min · Rick Cui

adb 与安卓使用

查看包名 adb shell pm list package adb shell pm list package | findstr xxx 查看包的信息 adb shell pm dump com.xxx.xxx.xxx | findstr version adb shell dumpsys package com.xxx.xxx.xxx | findstr version 查看包的路径 adb shell pm path com.xxx.xxx.xxx 获取系统应用 adb shell pm list packages -s 获取第三方应用 adb shell pm list packages -3 启动指定 activity adb shell am start -n com....

December 23, 2023 · 2 min · Rick Cui

Ubuntu 编译指定版本的 curl 库

卸载原有版本的 curl apt-get --purge remove curl 下载所需版本的 curl wget https://curl.se/download/curl-7.47.1.tar.gz 解压并编译 tar -zxvf curl-7.47.1.tar.gz cd curl-7.47.1 ./configure shared make make install 编译好的可执行文件在 /usr/local/bin 目录下 编译好的动态库和静态库在 /usr/local/lib 目录下 创建可执行文件和动态链接库的软连接 参考: curl download archive ubuntu卸载安装curl Linux下更新curl版本

November 3, 2023 · 1 min · Rick Cui

Ubuntu 编译指定版本的 OpenSSL 库

重命名原有的 openssl 可执行文件 mv -f /usr/bin/openssl /usr/bin/openssl.old 下载所需版本的 openssl wget http://www.openssl.org/source/openssl-1.0.0s.tar.gz 解压并编译 tar zxvf openssl-1.0.0s.tar.gz cd openssl-1.0.0s ./config shared --prefix=/usr/local/openssl1.0 make && make install 生成的可执行文件在 /usr/local/openssl1.0/bin 目录下 生成的动态链接库在 /usr/local/openssl1.0/lib 目录下 在 /usr/bin 目录下创建可执行文件的软连接 在 /usr/lib/x86_64-linux-gnu/ 目录下创建动态链接库的软连接 参考: OpenSSL Old Releases Linux openssl 升级、降级 openssl动态库生成以及交叉编译

November 2, 2023 · 1 min · Rick Cui