openrefactory/c笔记(二)

6 篇文章 0 订阅
6 篇文章 0 订阅

经过笔记(一)中的一番折腾,应该可以在vim中使用or/c的功能了,

这篇文章就介绍下or/c中的重命名的转换方法。

按照目前实践的结果来看,这个重命名(Rename)功能只能在单文件内对变量和函数名重命名(注释部分可选可不选)。

例子如下,

//main.c文件
#include <stdio.h>
#include "fun.h"

extern int a;
int main()
{
    a = sizeof(int);
    printf("size of int = %d\n",a);
    if(add()==-1) {
        printf("err: add()\n");
        return -1; 
    }   
    return 0;
}

//fun.h文件
int a;
int add() {
    printf("a = %d \n", a); 
    int leftOperand;
    int rightOperand;
    printf("input leftOperand = ");
    if(scanf("%d",&leftOperand)!=1) {
        printf("err: leftOperand should be a integer\n");
        return -1; 
    }   
    printf("input rightOperand = ");
    if(scanf("%d",&rightOperand)!=1) {
        printf("err: rightOperand should be a integer\n");
        return -1; 
    }   
    
    printf("leftOperand + rightOperand = %d\n", leftOperand + rightOperand);    
    return 0;
}

1. 用vim打开main.c文件,光标移动到变量a前方,在命令模式下输入命令:CRefactor rename (这里的命令按tab键可以自动补齐),

loading

2.回车后会提示输入新的变量名,假设我们输入newa作为新变量名。


3.之后会提示是否替换注释里出现的a字符,默认是否(false),


4.然后就会列出如下界面,可以选择相应的预览文件(man.c.preview)进行预览。


5.选中man.c.preview文件得到预览图如下


6.之后输入:CRefactorFinish,输入y(yes)完成对变量a的重命名。


7.最后结果如下



完成以后gcc编译是无法通过的,因为在mian.c中一开始引用了fun.h定义的变量a。现在a改名为newa,而newa在程序中是为定义的,所以在main.c文件中会报出对‘newa’未定义的引用 的错误。

可见这个变量重命名的重构只能在本文件内进行,无法对除本文件以外的定义或引用点进行重命名。

函数的重命名过程同上,只不过中间会有意外。例如以上的函数add()重命名为Add()时在进行第4步时会报下面的错误


如果这里按其他键退出后,那么man.c文件不发生任何改变,但是main.c.preview文件对add()更名为Add()。

但是这时如果使用:CRefactorViewChanges命令又可以回到如下界面


选择main.c.preview后又可以正常对函数重命名


使用:CRefactorFinish结束后发现main.c文件的add()函数成功重命名为Add()

很奇怪,目前也不知道是什么原因。


总结:

如果变量同时出现在了多个文件,对改变量重命名时应该能够同时对这多个文件修改此变量的名字,但是or/c无法做到这一点,很让人困惑。原因要么是我配置有问题,要么就是or/c不支持多文件重命名。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值