日本高清不卡中文字幕-一起草草视频在线观看-亚洲精品一区二区三区色-国产亚洲精品免费视频

你好!歡迎來(lái)到深圳市穎特新科技有限公司!
語(yǔ)言
當(dāng)前位置:首頁(yè) >> 技術(shù)中心 >> 單片機(jī)入門 >> 對(duì)于GCC警告選項(xiàng)的理解

對(duì)于GCC警告選項(xiàng)的理解

關(guān)鍵字:GCC 作者: 來(lái)源: 發(fā)布時(shí)間:2019-07-31  瀏覽:28

 GCC警告選項(xiàng)對(duì)我們及時(shí)找出代碼中BUG,改善代碼品質(zhì)很有幫助。

聽(tīng)說(shuō)高手們對(duì)每個(gè)警告選項(xiàng)都很熟悉,能靈活運(yùn)用各個(gè)警告選項(xiàng)來(lái)分門別類地過(guò)濾代碼中的BUG信息。

1

../SRC/libpjmacl/pjmacl_jaccmd.c:1661: 警告: dereferencing type-punned pointer will break strict-aliasing rules

pjmacl_free((void**)&cmn_ofs_rg_p);

PjmAclComnAndOfsList_t *cmn_ofs_rg_p = NULL;

2

../SRC/libpjmacl/pjmacl_pjm.c:332: 警告: assignment from incompatible pointer type

data_p = (PjmAclPrioAddr_t *)calloc(1, sizeof(PjmAclPrioAddr_t))

uint64_t *data_p;

3

../SRC/libpjmacl/pjmacl_pjm.c:2867: 警告: no previous declaration for ‘pjmacl_get_node_pri_U’

pjmacl_get_node_pri_U如果為外部函數(shù)的話,就應(yīng)該有個(gè)聲明加到類似pjsd_prt.h中

4

../SRC/libpjmfep/pjmfep_exec.c:406: 警告: implicit declaration of function ‘pjmfep_evc_queue_init’

../SRC/libpjmfep/pjmfep_exec.c:406: 警告: nested extern declaration of ‘pjmfep_evc_queue_init’

‘pjmfep_evc_queue_init’函數(shù)就沒(méi)有被聲明過(guò),而且如果定義文件和引用該函數(shù)文件不一樣時(shí),引用該函數(shù)的文件也沒(méi)有提前用extern 聲明該函數(shù)

5

../SRC/pjmd/pjmd_conff.c:1053: 警告: passing argument 1 of ‘set_rscGrpNode_type4’ discards qualifiers from pointer target type

const char *str_p,

set_rscGrpNode_type4(str_p, &rscgrp_p->group_info.nodeinfo);

static int set_rscGrpNode_type4(char* strwk, NodeRscInfo_t* info_p)

6警告選項(xiàng)中關(guān)注那些引用未初始化值的語(yǔ)句

7 變量定義時(shí),就最好初始化一下,省得到GCC 警告信息里刷數(shù)據(jù)

8:警告信息過(guò)于嚴(yán)格,有些警告信息就不是BUG了。比如調(diào)用函數(shù)中實(shí)參是&aa,這時(shí)這個(gè)指針就失去了具體的類型

dereferencing type-punned pointer will break strict-aliasing rules

call_ret = cmdlib_pjmcall(PJMCMD_CMD_PADLINE, &reqbufinf, buf_num, NULL, NULL, NULL, &exitval, &retval, (char **)&padlresp_p, &respsize, &resptype, clst_p);

中的(char **)&padlresp_p 就會(huì)產(chǎn)生上述警告信息

而&exitval 會(huì)產(chǎn)生

類似passing argument 1 of 'pjmd_pjsutil_rscunit_name2id' discards qualifiers from pointer target type的警告信息提示

dereferencing type-punned pointer will break strict-aliasing rules警告信息跟優(yōu)化選項(xiàng)-fstrict-aliasing 有關(guān)。當(dāng)開(kāi)啟這個(gè)優(yōu)化選項(xiàng)時(shí),可能優(yōu)化會(huì)導(dǎo)致源代碼中部分語(yǔ)句缺失,而造成系統(tǒng)工作不正常,所以就所有的違反strict-aliasing rules原則的地方加了條這個(gè)警告信息,提醒讀者檢查這個(gè)地方的代碼,看看是不是如果優(yōu)化后會(huì)導(dǎo)致部分語(yǔ)句工作不正常

同時(shí)這個(gè)信息提示還有另外一個(gè)目的,兩個(gè)不同類型的指針指向同一個(gè)地址時(shí),極有可能會(huì)導(dǎo)致代碼編寫出錯(cuò)(比如犯大小端的錯(cuò)誤,還有地址字節(jié)對(duì)齊的錯(cuò)誤),所以這個(gè)警告信息還有這一層的目的。

編輯:admin  最后修改時(shí)間:2019-07-31

聯(lián)系方式

0755-82591179

傳真:0755-82591176

郵箱:vicky@yingtexin.net

地址:深圳市龍華區(qū)民治街道民治大道973萬(wàn)眾潤(rùn)豐創(chuàng)業(yè)園A棟2樓A08

Copyright © 2014-2023 穎特新科技有限公司 All Rights Reserved.  粵ICP備14043402號(hào)-4

许昌县| 泰宁县| 湘潭县| 揭阳市| 阿克苏市| 淮滨县| 青河县| 木里| 依安县| 广德县| 元氏县| 黄陵县| 泸定县| 宜春市| 体育| 开阳县| 新丰县| 额济纳旗| 额济纳旗| 称多县| 长宁区| 平顶山市| 保亭| 阳泉市| 开封县| 鲁甸县| 宝坻区| 新沂市| 黄冈市| 清远市| 布拖县| 石渠县| 马关县| 凤山县| 沙坪坝区| 澳门| 龙南县| 大足县| 淮滨县| 安义县| 天津市|