emacs+etags 阅读代码

ctags-etags-5.8-2.el6.i686.rpm 立即下载

 

在windows下常用的源代码查看工具是Source Inside。在linux下我习惯用用etags、gtags、grep来查看源代码。

etags用于生成TAGS文件来提供emacs快速浏览C/C++源代码,它的最大作用就是能够快速跳转到函数定义、宏定义、数据结构定义、全局变量定 义等。
etags常常和find命令一同使用来生成TAGS文件,如下所示:

find . -name '*.[ch]' | xargs etags -a
etags常用命令:
M-visit-tags-table:选择生成TAGS文件,
M-tags-reset-tags-tables:重新设置tag table
M-. 查找一个tag,比如函数定义类型定义等。
C-u M-. 查找下一个tag的位置
M-* 回到上一次运行M-.前的光标位置。

.emacs中加入这样的语句:
(setq tags-file-name /usr/src/linux/TAGS")
这样emacs就会自动读取这个tags文件的内容。

对于一些project,makefile里已经做好了这一步,例如对工程glibc,执行make -f MakeTAGS

有了etags,为什么还要gtags?
你可能会遇到这样的情况:有一个函数myfunction,在工程的源代码里被调用了十几次,你想把 它们都找出来,这时候,etags只能找到它的定义,并不能找到它的调用。而使用gtags就能够实现这样的功能(当然,还有很多的办法)。
要使用gtags,首先要装global包:
apt-get install global
接着在project是目录下执行:
gtags
你会发现在当前目录多了几个文件:GPATH、GRTAGS、GSYMS、GTAGS。它们就是用于在源文件之间快速跳转。
在emacs里进入到gtags模式,执行“M-x gtags-mode”。
这样就可以使用“gtags-find-pattern”和“gtags-find-symbol”来查找函数调用和声明以及符号声明。

cscope

cscope只针对C语言。

sudo apt-get install cscope

在.emacs里加入这一句:

(require 'xcscope)

在工程的目录里设置cscope的工作目录,并在该目录下生成cscope.file和scope.out文件:

M-x cscope-set-initial-directory

M-x cscope-create-list-of-files-to-index

好了,如果要找一个符号的定义,那么就执行:

M-x cscope-find-global-definition

找调用某个函数的函数,执行:

M-x cscope-find-functions-calling-this-function

C-c s C-h 能找到更多关系cscope的命令。

grep也是一个很好的代码查找工具。例如在一个工程里查找函数名就schedule的函数的定义以及引用,

grep -n -e schedule -r --include=*.[hc] .

如图所示:

使用grep查看源代码

小结:
配合使用etags的“find-tag”(也就是M-.)命令和gtags的“gtags-find-symbol”命令、rgrep命令,能够更方 便、快捷地查找源代码
==========================================================
from: http://blog.youkuaiyun.com/meteor1113/archive/2009/07/16/4349261.aspx

学习了很多年的emacs,却一直都不能熟练使用,可能有工作太忙的原因,不过最大的原因还是没有坚持。 最近几天不忙了,又把emacs捡了起来,希望能坚持下去吧。

这一次直接使用了emacs23,是一个正在开发中的版本,不过因为对国际化支持得好了,我仍然选择了使用它。这个版本不用再像emacs21那样 自己安装mule了,而且在日文平台上也不用写一堆配置文件了。

目前我在win32和linux平台下除了emacs自带的lisp之外还使用了另外几个扩展:muse、cedet、ecb、cscope等。

muse是用来写日记的,也就是以前的emacs-wiki,现在这个文章就是用muse写的。muse的用法很简单,直接把下载的muse解压到 site-lisp里,打开emacs后load-library muse-mode和muse-html就可以了。前者是用来加载muse模式用的,只要加载了muse-mode,就可以在任何时候执行muse- mode切换到muse模式进行编辑,如果一个文件的扩展名是muse,那么打开这个文件的时候还会自动切换到muse模式下。而muse-html是用 来发布用的,它支持html,xhtml,xhtml1.0,xhtml1.1这几种方式,只要在muse模式下用C-c C-t(muse-project-publish-this-file)或者C-c C-T(muse-publish-this-file)就可以发布当前文件了。另外,还有muse-latex,muse-texinfo,muse- docbook等可以用来支持发布不同的格式。

cedet,用来进行代码补全,它的semantic是基于语法分析的,代码补全很智能,而且还有菜单,很好用。

ecb是用来读c/c++代码用的,它把emacs装扮得像一个IDE了。

cscope是用来替代(也不完全是替代,目前我是把cscope和etags结合起来使用的)etags的,用来查找c/c++代码中的符号。 cscope比etags的查找功能更强,不过我喜欢etags的alt+.的简洁用法,所以把etags也留下来了。

装扩展的方法很简单,直接从网上下载代码,解压到site-lisp目录下,在.emacs中require需要的扩展就可以 了。如果像我这么懒的话,连.emacs都可以不用,直接打开emacs,然后运行load-library命令载入就可以了。


==========================================================
from: http://blog.youkuaiyun.com/fyzhao/archive/2009/10/13/4658132.aspx

(本文参考http://www.emacs.cn/Doc/Etags,并根据自己的使用情况做了些微修改。)

 

1. etags 基本用法

在emacs里可以用etags命令生成emacs专用的tags文件,有了此文件之后便可以使用一些emacs tags的命令,比如对于编辑C/C++程序的人员可以方便的定位一个函数的定义,或者对函数名进行自动补齐:

  1. find . -name "*.cpp" -print -o -name "*.h" -print | etags -  

 

上述命令可以在当前目录查找所有的.h和.cpp文件并把它们的摘要提取出来做成TAGS文件,具体的etags的用法可以看一下etags的 manual。

 

在.emacs中加入这样的语句:

 

 

这样emacs就会自动读取这个tags文件的内容。

 

几个重要的命令。

 

  • M-. 查找一个tag,比如函数定义类型定义等。
  • C-u M-. 查找下一个tag的位置
  • M-* 回到上一次运行M-.前的光标位置。
  • M-TAB 自动补齐函数名。

 

2. 参考:一些整合的快捷键

易于编译和TAGS的使用,搜集自 zslevin 的帖子(LinuxForum GNU Emacs/XEmacs)

 

  • C-f5, 设置编译命令
  • f5, 保存当前窗口然后编译当前窗口文件
  1. (defun du-onekey-compile ()   
  2.   "Save buffers and start compile"   
  3.   (interactive)   
  4.   (save-some-buffers t)   
  5.   (compile compile-command))   
  6. (global-set-key [C-f5] 'compile)  
  7. (global-set-key [f5] 'du-onekey-compile)  

 

  • F7, 查找 TAGS 文件(更新 TAGS 表)
  • C-F7, 在当前目录下生成包含所有递归子目录的 TAGS 文件(使用了shell中的find命令)
  • C-. 开个小窗查看光标处的 tag
  • C-, 只留下当前查看代码的窗口(关闭查看 tag 的小窗)
  • M-. 查找光标处的 tag,并跳转
  • M-, 跳回原来查找 tag 的地方
  • C-M-, 提示要查找的 tag,并跳转
  • C-M-. 要匹配的 tag 表达式(系统已定义)
  • Shift-Tab, C/C++ 和 lisp 等模式中补全函数名(一般情况下M-Tab被窗口管理器遮屏了)

 

定义按键,在生成相应 tag 文件时,比如一个目录下所有的 *.cpp 和 *.h 文件使用这样的正则表达式 *.[ch]*,在下面的 C-F7 中可能会用到。

 

  1. (global-set-key [(f7)] 'visit-tags-table)         ; visit tags table  
  2. (global-set-key [C-f7] 'sucha-generate-tag-table) ; generate tag table  
  3. (global-set-key [(control .)] '(lambda () (interactive) (lev/find-tag t)))  
  4. (global-set-key [(control ,)] 'sucha-release-small-tag-window)  
  5. (global-set-key [(meta .)] 'lev/find-tag)  
  6. (global-set-key [(meta ,)] 'pop-tag-mark)  
  7. (global-set-key (kbd "C-M-,") 'find-tag)  
  8. (define-key lisp-mode-shared-map [(shift tab)] 'complete-tag)  
  9. (add-hook 'c-mode-common-hook      ; both c and c++ mode  
  10.           (lambda ()  
  11.             (define-key c-mode-base-map [(shift tab)] 'complete-tag)))  

 

上面定义的命令需要用到的函数:

  1. (defun lev/find-tag (&optional show-only)  
  2.   "Show tag in other window with no prompt in minibuf."  
  3.   (interactive)  
  4.   (let ((default (funcall (or find-tag-default-function  
  5.                               (get major-mode 'find-tag-default-function)  
  6.                               'find-tag-default))))  
  7.     (if show-only  
  8.         (progn (find-tag-other-window default)  
  9.                (shrink-window (- (window- height) 12)) ;; 限制为 12 行  
  10.                (recenter 1)  
  11.                (other-window 1))  
  12.       (find-tag default))))  
  13.   
  14. (defun sucha-generate-tag-table ()  
  15.   "Generate tag tables under current directory(Linux)."  
  16.   (interactive)  
  17.   (let   
  18.       ((exp "")  
  19.        (dir ""))  
  20.     (setq dir  
  21.           (read-from-minibuffer "generate tags in: " default-directory)  
  22.           exp  
  23.           (read-from-minibuffer "suffix: "))  
  24.     (with-temp-buffer  
  25.       (shell-command  
  26.        (concat "find " dir " -name /"" exp "/" | xargs etags ")  
  27.        (buffer-name)))))  
  28.   
  29. (defun sucha-release-small-tag-window ()  
  30.   "Kill other window also pop tag mark."  
  31.   (interactive)  
  32.   (delete-other-windows)  
  33.   (ignore-errors  
  34.     (pop-tag-mark)))  


==========================================================
from: http://blog.chinaunix.net/u/15586/showart_1190390.html

在Emacs中使用etags来浏览代码     对于代码量比较大的情况而言,浏览代码就是一件很重要的事情了。在vi中提供了一个比较好的插件来进行相关操作,但是Emacs又该怎么办呢?
    使用Emacs浏览代码有三个方案,最简单的就是etags,第二种是cscope,第三种暂时想不起来了。今天只说最简单的方式,由简入难吧。
    我本以为etags像其它插件一样,就是一个el文件,然后执行一下,后来发现我错了。etags其实是个shell命令。
    1).安装etags,一般来讲,这是emacs的内建程式;
    2).在当前目录建立tag table:M-! etags *.[ch];
    3).使用:
    A.M-. :跳至相应的函数定义处;
    B.M-* :返回刚才的函数名处;
    C.C-u M-. :如果emacs找错了,找下一个;
    D.M-Tab :自动补齐函数名;
    4).在当前目录将.h和.cpp文件提取出来做成tags文件:
    find . -name "*.[chCH]" -print | etags -
    或
    find -name "*.cpp" -exec etags -a {} ;
    5).将创建好的tag表通知emacs:
    M-x visit-tags-table
    6).让emacs自动读取tag文件内容:
    在~/.emacs文件中类似如下内容:
    (setq tags-file-name "~/project/src/TAGS")

    好了,基本上大体的用法就是这样的了。虽然用起来不是很方便,而且没有类似于代码浏览器那样的视图,但是倒可以满足最基本的需求,不是吗?
    (--完--)

 

whereis:Emacs-在点显示符号的定义 哪里符号 它是什么? (正在构建...请等待预发布) 这是一个FRAMEWORK,可帮助您轻松找到符号的定义 智能检测点上的符号并显示定义 搜索本地符号 用法 将以下代码添加到您的.emacs文件中: (require 'whereis-symbol) (whereis-symbol-mode 1 ) 互动功能: 转到符号的定义(如果有): ws-goto-symbol 搜索本地符号(在当前文件中定义的符号): ws-search-local-symbol 支持语言 埃马克斯·利斯普(Emacs Lisp) 去做 支持C / C ++,Python等。 支持Shell模式。 贡献 欢迎叉和拉请求! 立即下载

相关推荐

Windows 11下Dify安装部署实战指南

本文详细介绍在Windows 11环境下部署开源LLM应用开发平台Dify的完整流程。涵盖环境准备(WSL 2启用、Docker Desktop安装配置)、源码获取、Docker容器化部署、数据库初始化、服务启动验证等核心步骤。包括环境变量配置、性能优化、安全加固、端口冲突解决、数据库连接故障排查等关键技术要点。为开发者提供从零到一的Dify本地化部署实战指南

weixin_44269410的博客 851

emacs 中使用etags

原文地址:http://blog.youkuaiyun.com/emacx/article/details/6064123 以前没有用过这个东西,昨天研究了一下,很不错。把这个东西的使用方法简单的记录在下面! etags是一个用来创建tag table文件的程序,创建的数据格式emacs能够理解(还有一个程序ctags, 创建的tag table文件是给vi用的,和etags命令基本差不错)...

dalaoshu321的博客 579

Hyper-V虚拟交换机实战:外部/内部/专用网络配置全解析

本文全面解析Hyper-V虚拟交换机的三种核心类型:外部、内部和专用网络。详细阐述了外部交换机如何让虚拟机融入物理网络,内部交换机如何构建宿主机与虚拟机的私有通道,以及专用交换机如何实现虚拟机间的完全隔离。通过实战配置步骤、IP规划建议和OpenWRT软路由案例,帮助用户根据需求灵活部署,并特别强调了外部交换机配置中“允许管理操作系统共享此网络适配器”这一关键选项的重要性,以避免宿主机断网。

weixin_29218963的博客 543

Emacs中使用etags

在emacs里可以用etags命令生成emacs专用的tags文件,有了此文件之后便可以使用一些emacs tags的命令,比如对于编辑C/C++程序的人员可以方便的定位一个函数的定义,或者对函数名进行自动补齐: [Code] find -name "*.h" -or -name "*.cpp" |xargs etags --members --language=c++

石头 935

MacX DVD Ripper Pro for Mac(DVD解码器) 6.2.120190416免激活版

只需要5分钟即可转档一张DVD光碟!并允许我们在编码之前预览、编辑、裁剪、修剪或扩展视频。第一款也是唯一一款能够支持DVD到MP4,H.264,MOV,FLV,MPEG4等所有格式DVD(新DVD,99-标题DVD,损坏和无法播放的DVD)和翻录DVD / ISO映像的工具,AVI,QT,MP3等。借助350多种预设配置文件MacX DVD Ripper Pro for Mac(DVD解码器) 6...

llhf688的博客 891

矿卡CMP 170HX的AI推理性能优化实战

GPU计算在现代AI推理中扮演着核心角色,其并行计算架构特别适合处理神经网络的大规模矩阵运算。通过CUDA指令集优化和计算管线重构,可以显著提升硬件利用率,这在边缘计算和带宽敏感型任务中尤为重要。以NVIDIA CMP 170HX矿卡为例,通过禁用FMA指令和框架适配优化,其FP32性能可提升15.9倍,在Qwen2.5-1.5B模型的4-bit量化推理中达到A100同架构78%的解码速度。这种优化技术不仅让淘汰矿卡重获新生,更为边缘AI部署提供了高性价比解决方案,特别适合7B以下量化模型部署和多路视频分析

weixin_30432579的博客 632

emacs阅读linux代码,emacs+etags 阅读代码

在windows下常用的源代码查看工具是Source Inside。在linux下我习惯用用etags、gtags、grep来查看源代码。etags用于生成TAGS文件来提供emacs快速浏览C/C++源代码,它的最大作用就是能够快速跳转到函数定义、宏定义、数据结构定义、全局变量定 义等。etags常常和find命令一同使用来生成TAGS文件,如下所示:find . -name '*.[ch]' ...

weixin_33586720的博客 1133

Win11如何更改用户文件夹名(完整流程- 已验证可行)

把C盘所有文件备份,如果不想备份,则选择创建一个C盘的系统还原点(能在后续把C盘玩崩之后恢复原状)

Y_Aryan的博客 5万+

emacs TAGS etags

1. 创建TAGS etags file-list find . -name "*.[chCH]" -print | etags - find . -print -name "*.[chCH]" -o -name "*.cpp" | etags -   #-print需要提前,否则没有输出 # find参数-maxdepth n 可以指定搜索层数 2. 相对路径、绝对路径

shenyan008的专栏 1877

摩尔线程嵌入式面试题及参考答案(2万字长文)

说一下你对 drm 框架的理解。 DRM(Direct Rendering Manager)是 Linux 系统中用于管理图形显示设备的一个重要框架。 从架构层面来讲,它处于内核空间,主要目的是为用户空间的图形应用程序提供一个统一的接口来访问图形硬件。DRM 包括内核态的驱动模块和用户态的库。内核态的驱动负责和硬件进行交互,比如对显存的管理、硬件寄存器的配置等。用户态的库则方便应用程序利用内核态提供的功能进行图形渲染等操作。 在图形显示的具体流程中,DRM 可以控制显示设备的分辨率、刷

大模型大数据攻城狮的专栏 1229

SAP项目中 Waterfall vs Agile 的深度对比分析背景:方法论的演进SAP项目实施方法论经历了显著的代际更替。早期以 ASAP(Accelerated SAP) 为代表,采用经典瀑

本文对比分析了SAP项目实施中瀑布模型(ASAP)与敏捷方法(SAP Activate)的核心差异。瀑布模型采用线性流程,需求固定但变更成本高;敏捷方法则通过迭代开发实现动态调整,强调最佳实践和用户持续参与。文章指出,SAP系统的复杂性使纯粹敏捷难以实施,需在标准化与定制化间取得平衡。最终建议根据项目特性选择方法论:稳定需求适用瀑布模型,变化频繁则推荐敏捷,而SAP Activate本质上是两者的结构化融合,代表未来趋势。关键在于匹配项目实际需求,而非盲目追随方法论潮流。

金牌架构师 345

在Emacs中使用etags来浏览代码

在Emacs中使用etags来浏览代码 对于代码量比较大的情况而言,浏览代码就是一件很重要的事情了。在vi中提供了一个比较好的插件来进行相关操作,但是Emacs又该怎么办呢?     使用Emacs浏览代码有三个方案,最简单的就是etags,第二种是cscope,第三种暂时想不起来了。今天只说最简单的方式,由简入难吧。     我本以为etags像其它插件一样,就是一个el文件,然后执行一下

石头 870

37、深入解析SCTP与RTP传输协议

本文深入解析了SCTP与RTP两种重要传输协议。SCTP提供可靠的多流数据传输,支持关联管理、选择性确认和错误处理,适用于高可靠性场景;RTP则专注于实时音视频数据的低延迟传输,配合RTCP实现质量监控。文章详细介绍了两种协议的数据结构、工作流程及应用场景,并对比其特性,帮助开发者根据可靠性、实时性和多流需求选择合适的协议。

time3的博客 85

emacs mysql代码阅读_Emacs + etags + cscope 阅读代码

用Emacs+etags+cscope可以让你的Emacs拥有比Source Insight强大的代码阅读功能。etags: 这个是Emacs内置的功能,etags主要的功能是寻找一个变量或者函数的定义。用法如下:1,生成TAGS索引文件:etags `find . -name "*.[chS]"`或 etags `find . -name "*.h" -o "*.cpp"2,打开Emacs,读...

weixin_39747296的博客 180

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

emacs 使用 etags 阅读代码

 1 生成 TAGS 使用etags前要先生成TAGS文件。在很多网上的资料中[1][2]都是使用这样一条命令 find . -name "*.[chCH]" -print | etags - 管道前是一个查找文件的命令,但是我搞不懂etags 后的 - 是什么意思。请知道的同学告诉我,谢谢了。 受到参考文献[3]的启发,想出了两个更容易理解的命令,我要阅读的代码中只有 .c .h

猫的菜园子 2683

温度PID控制PLC程序

温度PID稳定控制程序,适用于欧姆龙PLC,对其他PLC也具有很大参考价值

emacs + etags + cscope + ecb阅读代码

在固定目錄下, 如$HOME下爲/usr/include/下的文件創建TAGS.include, 用文件的絕對路徑, 不用相對路徑, 然後在項目文件夾下用--etags-include將其包含進來:$: etags -R /usr/include -o TAGS.include$: etags -R /directory/for/coreutils/and/gnulibs/ -o TAGS.gnu$: cd ${DIRECTORY_FOR_PROJECT}$: etags -a --etags-includ

XDGG的专栏 974

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

emacs + etags

使用emacs的etags阅读源代码 Tue, 2009-10-20 01:53 — liuguangzhao 在阅读代码的时候,经常需要在文件间,函数间跳转,跳转到某个函数,某个变量,这时候可以使用ctags方式实现这个功能. emacs自带一个叫etags的工具程序,用来生成一个给emacs用的TAGS索引文件,在emacs中实现函数文件间

waterzhou的专栏 1264

Emacs的使用和配置

Emacs的使用和配置 这里是我的Emacs备忘录 Table of Contents 光标移动复制、粘贴删除查找与替换 简单查找替换正则表达式查找与替换 文本块操作矩形模式Tab 操作Buffer 管理在C/C++代码中的操作Emacs中的Register Save Positions in RegistersSaving Text in Register

robertzhouxh的专栏 445

Dell D630 Ubuntu 8.04之路(六) emacs基本配置(转)

原文地址:http://www.cppblog.com/hyjune/archive/2008/05/21/50653.html emcas难学易用,可扩展性强。有人把她当作信仰,有人认为他是魔鬼!学习首先记住基本的键盘快捷键,学会常用插件,深入学习还需学习lisp语言。本节紧对emacs作为开发环境做一个基本的介绍。 基本安装设置请参考:Ubuntu Ubuntu 8.04 LTS ...

ShawnXing的专栏 374

emacs之行六-使用etags创建TAGS文件

原文地址:  http://www.cnblogs.com/siyuan/archive/2011/04/28.html 使用etags前要先生成TAGS文件。在很多网上的资料中[1][2]都是使用这样一条命令 find . -name "*.[chCH]" -print | etags -    (目前使用此命令(在WIN上)) 管道前是一个查找文件的命令,但是我搞不懂e

jinzhou520 的专栏 5634

emacs阅读linux代码,在emacs下阅读Linux内核源码

在emacs下使用etags阅读Linux内核源码#cd /home/usrname/kernel/linux-2.4.33#find . -name "*.[chCHS]" | etags -Just wait a few minute,生成的TAGS文件有17M左右大小进入emacs,M-x visit-tag-table,选择刚生成的TAGS文件,即可开始emacs导游的Linux内核源码之...

weixin_42513944的博客 358

emacs java自动import_[转]emacs 代码自动补齐的三个方法

pts 阅读(5133) 评论(0) 编辑 收藏 所属分类: EmacsEmacs -- 自动补齐在编写代码时,自动补齐(成员函数变量,以及……)能提高很大的效率,emacs的自动补齐方法有很多种,我参考了很多其他网友的文章,简单总结了下,希望其他网友不要怪罪我哈,呵呵,我希望把我的学习过程记录下来,能对其他网友有所帮助.以下是几种不同的方法(也可以一块用哈)1. Emacs 自带的hip...

weixin_42360711的博客 304

Emacs 27 快捷键与命令速查指南:reference 项目 Emacs Cheat Sheet 完整解读

Emacs 是一款可扩展、可定制、自带文档的实时显示文本编辑器(extensible, customizable, self-documenting real time display text editor),本速查表专为 Emacs 27 编写。本文以 reference 仓库中 [source/_posts/emacs.md](https://link.gitcode.com/i/4f04b

gitblog_00716的博客 344

Erlang/OTP 的 Emacs 编程利器:Erlang mode 参考手册与实践指南

本篇技术指南系统梳理 Erlang/OTP 发行版中随 tools 应用一同发布的 **Erlang mode for Emacs** 的完整功能面:从缩进、注释填充、代码移动与标记、对齐、语法高亮,到 Tags 导航、代码骨架(Skeleton)、内置 Erlang Shell、编译与错误跳转、Man 手册浏览以及 IMenu 集成。本文以 [lib/tools/doc/references/e

gitblog_00858的博客 834

Erlang/OTP 中的 Emacs Erlang 模式:从安装配置到源码级深度解析

> 本指南基于 Erlang/OTP 仓库中 `lib/tools` 应用自带的 Emacs 集成([erlang_mode_chapter.md](https://link.gitcode.com/i/b209727966083e63ac3b29a31bfcedb9) 用户指南与 [erlang.el.md](https://link.gitcode.com/i/df16b13ef2c135a8

gitblog_00282的博客 254
上一篇: 2010年度报告:是谁在编写Linux内核?
下一篇: 内核级调试工具kdb
Emacx
博客等级 码龄16年 2粉丝 6原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值