isblank编译警告

解决C语言isblank编译警告
在使用gcc编译含有isblank函数的C代码时遇到了编译警告。警告提示isblank未声明,尽管已包含ctype.h头文件。查阅man手册发现isblank是C99标准的一部分。为消除警告,需要添加编译选项-std=c99。添加后警告消失,但引发对gcc对C99标准支持问题的思考。

最近对以前写的代码进行消除编译警告,但是有一个isblank的警告一直无法消去。

 

例子源码如下:

 

 

 

编译的结果:

 

bash-2.05b# gcc -Wall test.c test.c: In function `main': test.c:9: warning: implicit declaration of function `isblank'

 

这个警告是说isblank没有对应的函数声明,需要包含相应的头文件。

通过man isblank,所显示的信息来看,对应的头文件就是ctype.h,但还是不行呀。

 

 

后来发现,在比较新的Linux发行版中编译时则没有这个警告,只有在比较旧的版本中才有。

再仔细看了一下man isblank,偶然间瞥到man信息中的一段信息:

isascii():

_BSD_SOURCE || _SVID_SOURCE || _XOPEN_SOURCE

isblank(): _XOPEN_SOURCE >= 600 || _ISOC99_SOURCE || _POSIX_C_SOURCE >= 200112L; or cc -std=c99

 

一下就清楚了,isblank属于C99标准,这点通过查看ctype.h可以获得证明:

 

 

添加编译选项-std=c99,重新编译了一下,警告终于消除了:

bash-2.05b# gcc -Wall -std=c99 test.c

 

 

虽然编译警告解决了,但有一个疑问,gcc不完全支持C99标准吗? 这个等以后再学习了。

 

public void saveFieldConfig(FieldConfigDTO dto) throws SystemException { logger.info(“账单字段配置保存入参:{}”, JsonMapper.nonEmptyMapper().toJson(dto)); // 必填校验 String enterpriseNo = dto.getEnterpriseNo(); if (StringUtils.isBlank(enterpriseNo)) { throw new SystemException(SettlementCommErrorCode.JS_40000, “enterpriseNo”); } String productNo = dto.getProductNo(); if (StringUtils.isBlank(productNo)) { throw new SystemException(SettlementCommErrorCode.JS_40000, “productNo”); } List fieldConfigBenas = dto.getFieldConfigBenas(); if (CollectionUtils.isEmpty(fieldConfigBenas)) { throw new SystemException(SettlementCommErrorCode.JS_40000, “fieldConfigBenas”); } // 待修改配置 List modifys = new ArrayList<>(fieldConfigBenas.size()); int count = MagicNumberConst.INT1; for (FieldConfigBena vo : fieldConfigBenas) { // 获取对应字段账单配置基础信息 JsZddcZdpzb bean = new JsZddcZdpzb(); bean.setQybh(enterpriseNo); bean.setZgs(dto.getCompany()); bean.setCpbh(productNo); bean.setZdm(vo.getFieldNo()); bean.setZdzwm(vo.getFieldName()); List voList = jsZddcZdpzbServiceImpl.getFieldConfigs(bean); if (CollectionUtil.isEmpty(voList)) { logger.error(CodeUtil.getMessage(SettlementErrorCode.JS_104001)); continue; } JsZddcZdpzb info = voList.get(0); info.setSxh(count++); info.setSfxs(StringUtils.defaultString(vo.getIsDisplay(), info.getSfxs())); info.setDisplayName(StringUtils.defaultString(vo.getDisplayName(), vo.getFieldName())); modifys.add(info); } logger.warn(“待修改字段配置:{}”, JsonMapper.nonEmptyMapper().toJson(modifys)); if (CollectionUtils.isNotEmpty(modifys)) { jsZddcZdpzbServiceImpl.modifyList(modifys); } } }逐行分析
最新发布
07-05
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值