pro * C中的函数声明没有正文

时间:2015-12-10 06:42:28

标签: c++ c

  

根据评论我已将主题更改为pro c代码和i   撤回它是C ++语法的说法。保持标签相同;就像我一样   仍然希望它类似于c ++,没有Pro C标签可用请耐心等待   用它。

我想这是一个非常新的蜜蜂问题。但由于我没有足够的时间学习C ++文档,如果我能得到帮助,我将不胜感激。

我正致力于转换类似于C ++语法的pro * C代码。

以下是代码段

#include <stdio.h>
#include <string.h>
#include <prg_codes.h>
#include <prg_defines.h>

typedef struct
{
   int errorflag;
   int slot;
} option_info;


int calc_options(currArgc,currArgv,options)
int currArgc;
char *currArgv[];
option_info *options;
{   
   int optChar;
   int invopt=0;
 while ((optChar = getopt(currArgc, currArgv, ":s:")) != -1 && !(invopt))
  {}
   /* other commands */

}  


void  main(int argc, char *argv[])
{

    option_info options;     
    int rc = 0;
    rc=calc_options(argc,argv,&options);
    /* other commands */

}

我的问题是

option_info被定义为结构,然后作为函数定义,并从main调用。好吗?它是如何工作的?

option_info位于函数calc_options中。因为option_info似乎使用了calc_options中定义的参数。

或者calc_options正文是写在include部分的任何其他文件的其他地方吗?

1 个答案:

答案 0 :(得分:2)

此代码段采用古老的K&amp; R C语法,它早于ANSI C.然后它的缩进奇怪,这使得它看起来就像你描述的那样,但事实并非如此。 calc_options是带有三个参数的函数定义,其中第三个是指向typedef option_info的指针options

这在ANSI C语法中是相同的,因此更容易阅读:

int calc_options(int currArgc, char *currArgv[], option_info *options)
{
  int optChar;
  int invopt=0;
  while ((optChar = getopt(currArgc, currArgv, ":s:")) != -1 && !(invopt))
  {}
  /* other commands */
}  

“option_info被定义为结构”(以及结构的typedef)

“然后作为一个函数并从main调用”。

“没事吗?” (但应更改为ANSI语法)

“它是如何运作的?” 相当不错

“在函数calc_options中是否有option_info?” 这是第三个参数options

的类型

“因为option_info似乎使用了calc_options中定义的参数。” 参数的类型options

“或者calc_options正文写在include部分的任何其他文件的其他地方?”的都能跟得上