鱼C论坛

 找回密码
 立即注册
查看: 1677|回复: 1

[已解决]函数定义

[复制链接]
发表于 2021-5-29 21:25:12 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
本帖最后由 rt3 于 2021-5-29 21:26 编辑

我发现代码中的第9行用第7-8行代替也能通过编译,那7-8行这种用法是有什么好处嘛?谢谢
  1. #include<stdio.h>
  2. #include <readline/readline.h>
  3. #include <readline/history.h>
  4. #include <stdlib.h>
  5. #include <unistd.h>

  6. int com_cd PARAMS((char *));
  7. int com_cd (arg) char *arg;
  8. //int com_cd(char *arg)
  9. {
  10.         if(chdir(arg)==-1){
  11.         perror(arg);
  12.         return 1;
  13.         }
  14. }

  15. int main(){
  16.         char *path="/home/";
  17.         int a=com_cd(path);
  18.         switch(a){
  19.                 case 0:
  20.                         puts("succeed.\n");
  21.                         break;
  22.                 default:
  23.                         printf("failed.a==%d\n",a);
  24.                         break;
  25.         }
  26. }
复制代码

编译命令
  1. gcc main.c -g -lreadline -lhistory -o main.run
复制代码
最佳答案
2021-5-29 22:05:40
这是古老的 K&R C 语法
PARAMS 是一个宏,下面是这个宏的定义,在 bash/tilde.h 里面,第 34 行开始

  1. #if !defined (PARAMS)
  2. #  if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
  3. #    define PARAMS(protos) protos
  4. #  else
  5. #    define PARAMS(protos) ()
  6. #  endif
  7. #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 的写法
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-5-29 22:05:40 | 显示全部楼层    本楼为最佳答案   
这是古老的 K&R C 语法
PARAMS 是一个宏,下面是这个宏的定义,在 bash/tilde.h 里面,第 34 行开始

  1. #if !defined (PARAMS)
  2. #  if defined (__STDC__) || defined (__GNUC__) || defined (__cplusplus)
  3. #    define PARAMS(protos) protos
  4. #  else
  5. #    define PARAMS(protos) ()
  6. #  endif
  7. #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 的写法
小甲鱼最新课程 -> https://ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-7-7 08:44

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表