| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 425 人关注过本帖
标题:Linux问题(不要吐槽啊我是无辜滴...)
只看楼主 加入收藏
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
结帖率:97.22%
收藏
已结贴  问题点数:20 回复次数:8 
Linux问题(不要吐槽啊我是无辜滴...)
本来是在Linux板块上问的,但是那边人太少了,高手转转就走了,昨天发了问题没有彻底弄明白,希望略懂Linux的人进来看看
https://bbs.bccn.net/thread-395403-1-1.html
搜索更多相关主题的帖子: Linux 
2013-01-07 12:15
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:10 
和Linux毫无关系,和gcc也毫无关系,就是

#ifdef GETNAME_H // 如果已经定义过GETNAME_H则……
#undef GETNAME_H
……
#endif

你还不明白就没办法了
2013-01-07 12:33
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
我明白这个,只是我没有定义GETNAME_H,所以void getname(void)
压根不会执行,那不就没有它的定义了,程序不会出错吗...
不懂请讲...

I have not failed completely
2013-01-07 12:37
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:5 
百度 条件编译


[fly]存在即是合理[/fly]
2013-01-07 12:38
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:5 
以下是引用神龙赖了在2013-1-7 12:37:39的发言:

我明白这个,只是我没有定义GETNAME_H,所以void getname(void)
压根不会执行,那不就没有它的定义了,程序不会出错吗...
不懂请讲...
第一,void getname(void)是声明语句,而非执行语句。
第二,程序会不会出错天知道,但我想你问的应该是“代码能编译通过吗?”
第三,哎,我每天都有重复打好多同样的字,那就再打一遍:
      在古老的,已经被废弃的C语言标准中,如果一个函数未曾声明而被使用,则假定这个函数是可以接受任意参数,返回类型为int的函数。因此,你的代码有可能编译通过。当然,前面已经说过了,这毕竟是“已经被废弃的”,所以符合标准的编译器即便不报错误信息,也会给你一个警告信息。
2013-01-07 12:57
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
哦,所以这个操作还是非法的,但是GCC竟然没给我警告,真是奇怪...
可能是我一次直接生成了吧。。。

I have not failed completely
2013-01-07 13:02
azzbcc
Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19Rank: 19
来 自:江西财经大学
等 级:贵宾
威 望:81
帖 子:3293
专家分:12919
注 册:2012-11-4
收藏
得分:0 
这样也能蹭到分


[fly]存在即是合理[/fly]
2013-01-07 13:04
神龙赖了
Rank: 10Rank: 10Rank: 10
来 自:萨塔星
等 级:青峰侠
威 望:2
帖 子:711
专家分:1788
注 册:2012-10-13
收藏
得分:0 
来人啊,拖出去斩了...

I have not failed completely
2013-01-07 13:07
rjsp
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
等 级:版主
威 望:528
帖 子:9031
专家分:54061
注 册:2011-1-18
收藏
得分:0 
以下是引用神龙赖了在2013-1-7 13:02:06的发言:

哦,所以这个操作还是非法的,但是GCC竟然没给我警告,真是奇怪...
可能是我一次直接生成了吧。。。

我用mingw4.7.2是试验了一下,代码如下
程序代码:
int main(void)
{
    getname(); // 这里报 含蓄的声明了一个对象
               // 当你使用了编译参数-Wimplicit-function-declaration才会报警告
               // 当然用-std=c99也会报,因为就是C99才废止了允许含蓄声明
    return 0;
}

void getname(void) // 这里报类型冲突,因为含蓄声明的函数是返回int的
{
}
2013-01-07 13:20
快速回复:Linux问题(不要吐槽啊我是无辜滴...)
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.033221 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved