马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
本帖最后由 rt3 于 2021-5-29 21:26 编辑
我发现代码中的第9行用第7-8行代替也能通过编译,那7-8行这种用法是有什么好处嘛?谢谢#include<stdio.h>
#include <readline/readline.h>
#include <readline/history.h>
#include <stdlib.h>
#include <unistd.h>
int com_cd PARAMS((char *));
int com_cd (arg) char *arg;
//int com_cd(char *arg)
{
if(chdir(arg)==-1){
perror(arg);
return 1;
}
}
int main(){
char *path="/home/";
int a=com_cd(path);
switch(a){
case 0:
puts("succeed.\n");
break;
default:
printf("failed.a==%d\n",a);
break;
}
}
编译命令gcc main.c -g -lreadline -lhistory -o main.run
这是古老的 K&R C 语法
PARAMS 是一个宏,下面是这个宏的定义,在 bash/tilde.h 里面,第 34 行开始
#if !defined (PARAMS)
# if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
# define PARAMS(protos) protos
# else
# define PARAMS(protos) ()
# endif
#endif
7行的 int com_cd PARAMS((char *));
根据情况会替换成下面的两种
int com_cd (char *);
int com_cd ();
第一种是标准C的写法,如果你当前的编译环境是标准C的话,就会被替换成第一种
第二种是K&R C 的写法,如果你当前的编译环境是K&R C的话,就会被替换成第二种
8 行 int com_cd (arg) char *arg;
这是 K&R C 的写法
|