pro * C中没有主体的函数声明[关闭]

Posted

技术标签:

【中文标题】pro * C中没有主体的函数声明[关闭]【英文标题】:function declaration in pro*C without body [closed] 【发布时间】:2015-12-10 06:42:28 【问题描述】:

基于 cmets,我已将主题更改为 proc 代码,并且我 撤回它是 C++ 语法的说法。保持标签相同;正如我 仍然希望它类似于c++并且没有可用的ProC标签请多多包涵 用它。

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

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

这里是代码sn-p

#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 调用。好吗?它是如何工作的?

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

或者calc_options body 写在包含部分的任何其他文件的其他地方?

【问题讨论】:

函数的声明语法是 Kernighan & Ritchie C(从 1970 年代开始),它在 C++ 中不受支持。此外,void main 在 C 和 C++ 中均无效。与您的说法相反,option_info 仅定义为 struct,而不是函数, C 和 C++ 允许为 struct 和函数使用相同的名称。 但是这个链接 infolab.stanford.edu/~ullman/fcdb/oracle/or-proc.html#overview 说 pro*c 代码遵循相同的 C/C++ 语法 关于“但是”有三种可能:(1)您对该页面所读内容的解释是错误的,或(2)该页面上的内容是错误的,或(3)您认为没有矛盾的地方。 “我没有足够的时间学习 C++ 文档”。你将在这个项目上度过一段艰难的时光。考虑雇用某人。 @user1016198 该链接没有说明语法。 【参考方案1】:

这个 sn-p 采用早于 ANSI C 的古老 K&R 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 正文写在包含部分的任何其他文件的其他位置?” 没有

【讨论】:

非常感谢。非常感谢您的努力。即使在这个问题似乎无法接受之后。 它也骗了我一秒钟,看起来确实很奇怪。干杯,祝你好运。

以上是关于pro * C中没有主体的函数声明[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

在类声明中定义朋友功能

SwiftUI:函数声明了一个不透明的返回类型,但其主体中的返回语句没有匹配的底层类型

如何修复“函数声明了一个不透明的返回类型,但在其主体中没有返回语句来推断基础类型”错误?

错误消息:“函数声明了一个不透明的返回类型,但它的主体中没有返回语句来推断基础类型”

C语言基础:函数(定义函数声明函数调用函数(传值调用 / 引用调用)函数的参数(形参 / 实参))

C ++接收纯虚函数错误,“变量或字段'x'声明为void”[关闭]