cdecl测试用例 [英] cdecl test cases

查看:87
本文介绍了cdecl测试用例的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

几年前做过一个有趣的项目..一个cdecl,但从未真正测试过它。


以下是我刚试过的一些测试用例:


cdecl> char ** argv;

cdecl> argv是指向char的指针

看起来不错


cdecl> int(* daytab)[13];

cdecl> daytab是指向数组的指针[13] int

看起来不错


cdecl> int * daytab [13];

cdecl> daytab是指针int的数组[13]

看起来不错


cdecl> void * comp();

cdecl> comp是函数返回指向void的指针

看起来没问题


cdecl> char(*(* x())[])();

cdecl> x是函数返回指向函数指针数组的指针

返回char

看起来没问题


cdecl> char(*(* x [3])())[5];

cdecl> x是指向函数的指针数组[3]返回指向数组的指针

[5] of char

看起来不错


cdecl> ; char * const *(* next)();

cdecl> next是指向函数返回指针的指针(只读)

指向char的指针
解析错误:" ;;"在第255行。提示:不是有效的类型。

看起来没问题,除了解析错误。


cdecl> char **(c [10])(int ** p);

cdecl> c是函数的数组[10]返回指向char的指针

看起来没问题


cdecl> void(* signal(int sig,void(* func)(int)))(int);

cdecl> signal是函数返回指向void的指针

cdecl> void(* signal(int,void(*)(int)))(int);

cdecl>信号是功能返回指针无效

不行


我在这里错过了什么,或者人们是否同意上述内容?

(我没有另外的cdecl与之交叉核对)


有人有更多测试用例的想法吗?


-

Tor< torust AT online DOT no>

Did a fun project some years ago.. a cdecl, but never really tested it.

Here are some test cases I just tried:

cdecl> char **argv;
cdecl> argv is pointer to pointer to char
Looks ok

cdecl> int (*daytab)[13];
cdecl> daytab is pointer to array [13] of int
Looks ok

cdecl> int *daytab[13];
cdecl> daytab is array [13] of pointer to int
Looks ok

cdecl> void *comp();
cdecl> comp is function returning pointer to void
Looks ok

cdecl> char (*(*x())[])();
cdecl> x is function returning pointer to array of pointer to function
returning char
Looks ok

cdecl> char (*(*x[3])())[5];
cdecl> x is array [3] of pointer to function returning pointer to array
[5] of char
Looks ok

cdecl> char* const *(*next)();
cdecl> next is pointer to function returning pointer to (read-only)
pointer to char
Parse error: ";" at line 255. Hint: Not a valid type.
Looks ok, except for the parse error.

cdecl> char **(c[10])(int **p);
cdecl> c is array [10] of function returning pointer to pointer to char
Looks ok

cdecl> void (*signal(int sig, void (*func)(int)))(int);
cdecl> signal is function returning pointer to void
cdecl> void (*signal(int, void (*)(int)))(int);
cdecl> signal is function returning pointer to void
Not ok

Did I miss something here, or do people agree with the above?
(I don''t have another cdecl to cross-check with)

Does someone have ideas for more test-cases?

--
Tor <torust AT online DOT no>

推荐答案



Tor Rustad写道:

Tor Rustad wrote:
几年前做了一个有趣的项目..一个cdecl,但从未真正测试过
它。
以下是我刚试过的一些测试用例:

cdecl> char ** argv;
cdecl> argv是指向char的指针
看起来没问题

cdecl> int(* daytab)[13];
cdecl> daytab是指向数组[13]的指针
看起来没问题

cdecl> int * daytab [13];
cdecl> daytab是指向int的指针数组[13]
看起来没问题

cdecl> void * comp();
cdecl> comp是函数返回指向void的指针
看起来没问题

cdecl> char(*(* x())[])();
cdecl> x是函数返回指向
函数返回字符的指针数组指针

cdecl> char(*(* x [3])())[5];
cdecl> x是指向函数的指针的数组[3]返回指向
数组的指针[5] char
看起来没问题

cdecl> char * const *(* next)();
cdecl> next是指向函数返回指针的指针(只读)
指向char的指针
解析错误:" ;;"在第255行。提示:不是有效的类型。
看起来没问题,除了解析错误。

cdecl> char **(c [10])(int ** p);
cdecl> c是函数的数组[10]返回指向
char的指针看起来没问题

cdecl> void(* signal(int sig,void(* func)(int)))(int);
cdecl> signal是函数返回指向void的指针
cdecl> void(* signal(int,void(*)(int)))(int);
cdecl>信号是函数返回指针无效
不行


我的cdecl显示:


cdecl>解释void(* signal(int sig,void(* func)(int)))(int);

语法错误


我不是我认为我在一个声明中处理了多个

标识符的cdecl版本(在这种情况下是信号和函数)。


cdecl> explain void(* signal(int,void(*)(int)))(int);

声明信号为函数(int,指向函数(int)的指针返回

)返回指向函数的指针(int)返回void


看起来不错。

我在这里错过了什么,或者人们是否同意上述内容?< (/我没有另外的cdecl与之交叉检查)

是否有人有更多测试用例的想法?


我拥有的版本非常强大且功能齐全,支持readline

(如果有的话)。它是为Linux编写的,但应该很容易移植到类似于系统的
。您可以下载源代码包,

附带一个迷你测试,位于:
http://www.ibiblio.org/pub/Linux/dev...ecl-2.5.tar.gz

-
Tor< torust AT在线DOT否>
Did a fun project some years ago.. a cdecl, but never really tested it.
Here are some test cases I just tried:

cdecl> char **argv;
cdecl> argv is pointer to pointer to char
Looks ok

cdecl> int (*daytab)[13];
cdecl> daytab is pointer to array [13] of int
Looks ok

cdecl> int *daytab[13];
cdecl> daytab is array [13] of pointer to int
Looks ok

cdecl> void *comp();
cdecl> comp is function returning pointer to void
Looks ok

cdecl> char (*(*x())[])();
cdecl> x is function returning pointer to array of pointer to function returning char
Looks ok

cdecl> char (*(*x[3])())[5];
cdecl> x is array [3] of pointer to function returning pointer to array [5] of char
Looks ok

cdecl> char* const *(*next)();
cdecl> next is pointer to function returning pointer to (read-only)
pointer to char
Parse error: ";" at line 255. Hint: Not a valid type.
Looks ok, except for the parse error.

cdecl> char **(c[10])(int **p);
cdecl> c is array [10] of function returning pointer to pointer to char Looks ok

cdecl> void (*signal(int sig, void (*func)(int)))(int);
cdecl> signal is function returning pointer to void
cdecl> void (*signal(int, void (*)(int)))(int);
cdecl> signal is function returning pointer to void
Not ok
My cdecl shows:

cdecl> explain void (*signal(int sig, void (*func)(int)))(int);
syntax error

I don''t think the version of cdecl that I have handles multiple
identifiers in a single declaration (signal and func in this case).

cdecl> explain void (*signal(int, void (*)(int)))(int);
declare signal as function (int, pointer to function (int) returning
void) returning pointer to function (int) returning void

Look good.
Did I miss something here, or do people agree with the above?
(I don''t have another cdecl to cross-check with)

Does someone have ideas for more test-cases?
The version I have is very capable and featureful and supports readline
if you have it. It was written for Linux but should be easy to port to
similiar systems. You can download the source code package, which
comes with a mini test quite, at:
http://www.ibiblio.org/pub/Linux/dev...ecl-2.5.tar.gz.
--
Tor <torust AT online DOT no>




Rob Gamble



Rob Gamble


Tor Rustad写道:
Tor Rustad wrote:

几年前做过一个有趣的项目..一个cdecl,但从未真正测试过它。 />
以下是我刚试过的一些测试用例:

cdecl> char ** argv;
cdecl> argv是指向char的指针
看起来没问题

cdecl> int(* daytab)[13];
cdecl> daytab是指向数组[13]的指针
看起来没问题

cdecl> int * daytab [13];
cdecl> daytab是指向int的指针数组[13]
看起来没问题

cdecl> void * comp();
cdecl> comp是函数返回指向void的指针
看起来没问题

cdecl> char(*(* x())[])();
cdecl> x是函数返回指向函数指针数组的指针
返回char
看起来没问题

cdecl> char(*(* x [3])())[5];
cdecl> x是指向函数的指针的数组[3]返回指向数组的指针
[5] of char
看起来没问题

cdecl> char * const *(* next)();
cdecl> next是指向函数返回指针的指针(只读)
指向char的指针
解析错误:" ;;"在第255行。提示:不是有效的类型。
看起来没问题,除了解析错误。

cdecl> char **(c [10])(int ** p);
cdecl> c是函数的数组[10]返回指向char的指针
看起来没问题

cdecl> void(* signal(int sig,void(* func)(int)))(int);
cdecl> signal是函数返回指向void的指针
cdecl> void(* signal(int,void(*)(int)))(int);
cdecl>信号是功能返回指针无效
不行

我在这里错过了什么,或者人们是否同意上述内容?
(我没有另外的cdecl交叉 - 检查)

是否有人有更多测试用例的想法?

Did a fun project some years ago.. a cdecl, but never really tested it.

Here are some test cases I just tried:

cdecl> char **argv;
cdecl> argv is pointer to pointer to char
Looks ok

cdecl> int (*daytab)[13];
cdecl> daytab is pointer to array [13] of int
Looks ok

cdecl> int *daytab[13];
cdecl> daytab is array [13] of pointer to int
Looks ok

cdecl> void *comp();
cdecl> comp is function returning pointer to void
Looks ok

cdecl> char (*(*x())[])();
cdecl> x is function returning pointer to array of pointer to function
returning char
Looks ok

cdecl> char (*(*x[3])())[5];
cdecl> x is array [3] of pointer to function returning pointer to array
[5] of char
Looks ok

cdecl> char* const *(*next)();
cdecl> next is pointer to function returning pointer to (read-only)
pointer to char
Parse error: ";" at line 255. Hint: Not a valid type.
Looks ok, except for the parse error.

cdecl> char **(c[10])(int **p);
cdecl> c is array [10] of function returning pointer to pointer to char
Looks ok

cdecl> void (*signal(int sig, void (*func)(int)))(int);
cdecl> signal is function returning pointer to void
cdecl> void (*signal(int, void (*)(int)))(int);
cdecl> signal is function returning pointer to void
Not ok

Did I miss something here, or do people agree with the above?
(I don''t have another cdecl to cross-check with)

Does someone have ideas for more test-cases?




以下是我系统上的结果


[1] c:\ c\ junk> cdecl cdecl.c

将argv声明为指向char的指针

将daytab声明为指向int 13的数组的指针
将daytab声明为指向int的指针数组13

声明x为函数返回指向指向数组的指针

函数返回char

声明x为指向函数的指针数组3返回指针

数组5 char

声明下一个指向函数的指针返回指向const的指针

指向char的指针

解析错误

解析错误

将信号声明为函数(i nt,指向函数的指针(int)

返回void)返回指向函数的指针(int)返回void


[1] c:\c\垃圾> cat cdecl.c

解释char ** argv;

解释int(* daytab)[13];

解释int * daytab [13];

解释void * comp();

解释char(*(* x())[])();

解释char(*(* x [3])())[5];

解释char * const *(* next)();

解释char * *(c [10])(int ** p);

解释void(* signal(int sig,void(* func)(int)))(int);

解释void(* signal(int,void(*)(int)))(int);

-

"我的结论是有两个构建软件的方法

设计:一种方法是使它变得如此简单以至于显然没有缺陷,而另一种方法是使它变得如此复杂

没有明显的缺陷。 - C. A. R. Hoare



Here are the results on my system

[1] c:\c\junk>cdecl cdecl.c
declare argv as pointer to pointer to char
declare daytab as pointer to array 13 of int
declare daytab as array 13 of pointer to int
declare comp as function returning pointer to void
declare x as function returning pointer to array of pointer to
function returning char
declare x as array 3 of pointer to function returning pointer to
array 5 of char
declare next as pointer to function returning pointer to const
pointer to char
parse error
parse error
declare signal as function (int, pointer to function (int)
returning void) returning pointer to function (int) returning void

[1] c:\c\junk>cat cdecl.c
explain char **argv;
explain int (*daytab)[13];
explain int *daytab[13];
explain void *comp();
explain char (*(*x())[])();
explain char (*(*x[3])())[5];
explain char* const *(*next)();
explain char **(c[10])(int **p);
explain void (*signal(int sig, void (*func)(int)))(int);
explain void (*signal(int, void (*)(int)))(int);
--
"I conclude that there are two ways of constructing a software
design: One way is to make it so simple that there are obviously
no deficiencies and the other way is to make it so complicated
that there are no obvious deficiencies." -- C. A. R. Hoare


" CBFalconer" < CB ******** @ yahoo.com>写在消息中


< snip>
"CBFalconer" <cb********@yahoo.com> wrote in message

<snip>
以下是我系统上的结果

[1] c :\c\ junk> cdecl cdecl.c
声明argv作为指向char的指针
声明daytab作为指向int 13的数组的指针
声明daytab作为指向int的指针的数组13
声明comp作为函数返回指向void的函数
声明x作为函数返回指向指针数组的指针
函数返回char
声明x作为指向函数返回指针的指针的数组3
数组5 of char
声明接下来作为指向函数的指针返回指向const的指针
解析错误
解析错误
声明信号为函数( int,指向函数的指针(int)
返回void)返回指向函数的指针(int)返回void

[1] c:\c\\\ tunk> cat cdecl.c 解释int(* daytab)[13];
解释int * daytab [13];
解释void * comp();
解释char(*(* x())[])();
解释char(*(* x [3])())[5];
解释char * const *(* next)();
解释char **(c [10])(int ** p);
解释void(* signal(int sig,void(* func)(int)))(int);
解释void(* signal(int,void(*)(int)))(int);
Here are the results on my system

[1] c:\c\junk>cdecl cdecl.c
declare argv as pointer to pointer to char
declare daytab as pointer to array 13 of int
declare daytab as array 13 of pointer to int
declare comp as function returning pointer to void
declare x as function returning pointer to array of pointer to
function returning char
declare x as array 3 of pointer to function returning pointer to
array 5 of char
declare next as pointer to function returning pointer to const
pointer to char
parse error
parse error
declare signal as function (int, pointer to function (int)
returning void) returning pointer to function (int) returning void

[1] c:\c\junk>cat cdecl.c
explain char **argv;
explain int (*daytab)[13];
explain int *daytab[13];
explain void *comp();
explain char (*(*x())[])();
explain char (*(*x[3])())[5];
explain char* const *(*next)();
explain char **(c[10])(int **p);
explain void (*signal(int sig, void (*func)(int)))(int);
explain void (*signal(int, void (*)(int)))(int);




谢谢!


解释char **(c [10])(int **);


也会给出解析错误?


-

Tor< torust AT online DOT no>



Thanks! Does

explain char **(c[10])(int **);

also give a parse error?

--
Tor <torust AT online DOT no>


这篇关于cdecl测试用例的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆