zengxy 发表于 2010-11-26 14:14:02

C语言里有没有见过这么写的?

void func()
int a;
{
    ...
}


在CCS里编译没问题,

从来没见过,请教牛人,这么定义跟直接在最开始定义有什么区别吗?为什么不报错?

takashiki 发表于 2010-11-26 14:37:23

真的是这么写的?那CCS还真不是一般的强,连参数列表不一致都可以直接无视……

要写也是这样写吧:
void func(a)                  /* 注意这里的形参a,不能省去的!CCS没用过,不知道是不是真的可以省去。 */
int a;
{
    ...
}
这种写法在调用参数不一致时不会报错,比如调用func(1.1f)也不报错的,因为没有类型信息。

不过还是建议这样写,可以让编译器在编译时检查参数的类型匹配:
void func(int a)
{
    ...
}

上一种写法在比较老的C语言程序中是标准用法,现在基本已经废弃了,MISRA C规范已经禁止了第一种写法。

zengxy 发表于 2010-11-26 14:39:44

我错了,是LS那样的

zengxy 发表于 2010-11-26 14:40:31

膜拜神人,我辈从来没见过

shark_32 发表于 2010-11-27 17:12:23

好像老谭的书有介绍过这种写法吧
页: [1]
查看完整版本: C语言里有没有见过这么写的?