LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 970|回复: 9

编译警告的问题。

[复制链接]
发表于 2003-6-24 15:37:53 | 显示全部楼层 |阅读模式
如下一段程序。

time_t systime;
struct tm tmtime;
char LS[100];

systime = time(NULL);
tmtime = * localtime(&systime);
strftime(LS, strlen(LS), "LS|DA%y%m%d|TI%H%M%S|", &tmtime);

我用gcc -Wall 的选项编译的时候,他有 %y 只会返回两位数字的一个警告,这却是我正需要的。我怎么才能使用-Wall选项而又不会在我确定的地方不出现类似的警告。
发表于 2003-6-24 20:09:55 | 显示全部楼层
这个不理就是

大程序的warning总是很多的

如果使用STL
编译时STL头文件内都会有WARNING
 楼主| 发表于 2003-6-25 08:43:15 | 显示全部楼层
在C中就没有一个宏指令暂时关闭和打开一些警告吗?
我以前是用Delphi的。就有这些指令,在我确定正确的时候关闭警告。而后又可能打开。这样就不会满屏警告。找错误都不方便。
发表于 2003-6-25 09:55:31 | 显示全部楼层
有个多编译先项

不用wall或是细分
看看gcc man  里面对编译先项的报告
 楼主| 发表于 2003-6-26 12:53:23 | 显示全部楼层
看了看帮助,头都大了。能不能就上面
strftime(LS, strlen(LS), "LS|DA%y%m%d|TI%H%M%S|", &tmtime);
这一句,我在确定两位年份的时候没有这个警告,而在其它的地方
我要四位年份时时候,万一我写成了 %y 而给我警告
来举一个例子。
发表于 2003-6-26 19:18:47 | 显示全部楼层

那么多什么看啊

到时对照没有问题就放过好了

一般现在只是关心error
发表于 2003-6-27 01:53:59 | 显示全部楼层
-Wall -Wno-format-2k

试试看
 楼主| 发表于 2003-6-27 09:00:59 | 显示全部楼层
非常谢谢大家。
可能大家不是很明白我的意思,比如有两条这样的语句。
strftime(LS, strlen(LS), "LS|DA%y%m%d|TI%H%M%S|", &tmtime);
strftime(LS, strlen(LS), "LS|DA%y%m%d|TI%H%M%S|", &tmtime);
上一条是正确的。而下一条我要的是四位的年份,也就是说是错误,有没有办法达到这样两条语句。
(关闭Y2K警告)
strftime(LS, strlen(LS), "LS|DA%y%m%d|TI%H%M%S|", &tmtime);
(打开Y2K警告)
strftime(LS, strlen(LS), "LS|DA%y%m%d|TI%H%M%S|", &tmtime);
这样就没有问题了。

不知道。C语言有没有这样的语句或是宏之类的东西。


BTW:编译警告的问题还是要注意。好像有位就举了这们一个例子。

1.c 文件

int main()
{
        float f=23.45;
        printf("main: %f\n", f);
        t1(f);
}

2.c 文件
void t1(float f)
{
        printf("t1:%f\n", f);
}

用gcc 1.c 2.c 没有什么问题。可是结果却成了。

main: 23.450001
t1:2.000000
发表于 2003-6-27 09:53:06 | 显示全部楼层
编译器只是机器
做那么智能还是很难的
发表于 2003-6-27 10:47:57 | 显示全部楼层
找了找,一时找不到怎么临时关闭某种警告。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表