日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 單片機 > 單片機
[導讀] GCC警告選項對我們及時找出代碼中BUG,改善代碼品質很有幫助。聽說高手們對每個警告選項都很熟悉,能靈活運用各個警告選項來分門別類地過濾代碼中的BUG信息。1../SRC/libpjmacl/pjmacl_jaccmd.c:1661: 警告: derefe

 GCC警告選項對我們及時找出代碼中BUG,改善代碼品質很有幫助。

聽說高手們對每個警告選項都很熟悉,能靈活運用各個警告選項來分門別類地過濾代碼中的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如果為外部函數的話,就應該有個聲明加到類似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’函數就沒有被聲明過,而且如果定義文件和引用該函數文件不一樣時,引用該函數的文件也沒有提前用extern 聲明該函數

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警告選項中關注那些引用未初始化值的語句

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

8:警告信息過于嚴格,有些警告信息就不是BUG了。比如調用函數中實參是&aa,這時這個指針就失去了具體的類型

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 就會產生上述警告信息

而&exitval 會產生

類似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)化選項-fstrict-aliasing 有關。當開啟這個優(yōu)化選項時,可能優(yōu)化會導致源代碼中部分語句缺失,而造成系統(tǒng)工作不正常,所以就所有的違反strict-aliasing rules原則的地方加了條這個警告信息,提醒讀者檢查這個地方的代碼,看看是不是如果優(yōu)化后會導致部分語句工作不正常

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

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內容侵犯您的權益,請及時聯(lián)系本站刪除( 郵箱:macysun@21ic.com )。
換一批
延伸閱讀

如果你是在Linux下做開發(fā),你就必須知道Makefile是什么東西,如果不知道那就可以說你不是一個合格的Linux開發(fā)工程師,因為Makefile是必備的一項技能。那么,Makefile到底有什么作用呢?首先,gcc大...

關鍵字: Linux Makefile gcc

眾所周知,LLVM的Clang C / C ++編譯器比GCC提供更快的編譯速度。 但是,新版本的GCC中的編譯速度有所提高。

關鍵字: gcc Linux llvm

最近發(fā)布的 GCC 10 編譯器已對 C++20 的主要功能協(xié)程(Co-Routines)進行了初始支持,但是除非顯式地開啟該選項,否則并不會啟用此功能。當 GCC 10 在 C++20 模式(std

關鍵字: gcc

對于c編譯器,大家應早已熟悉。往期文章中,小編帶來諸多c編譯器相關文章,尤其是gcc c編譯器。本文中,小編將對gcc c編譯器如何編譯c程序予以介紹,并在文章的后半部分向大家講解如果選擇pic單片機的c編譯器。如果你對...

關鍵字: c編譯器 gcc pic 指數

c編譯器的重要性不言而喻,從往期c編譯器文章中,如c編譯器優(yōu)化、選定c編譯器等,想必大家對c編譯器均已有所了解。往期文章中,小編主要從宏觀方面為大家講解c編譯器,此外對于gcc c編譯器的講解也大多基于windows。本...

關鍵字: c編譯器 gcc Linux

c編譯器是編譯c程序的必備工具,缺少c編譯器情形下,c程序以及c++程序將無法運行。對于c編譯器,主要有3款。本文對于c編譯器的講解基于gcc c編譯器。此外,本文的gcc c編譯器為上篇文章的補充。如果你對本文內容存在...

關鍵字: c編譯器 gcc ubuntu

c編譯器很多,每款c編譯器均有其特點。本文對于c編譯器的講解基于gcc c編譯器,針對gcc c編譯器,小編曾帶來諸多文章,但大多基于windows平臺。本文中,將基于ubuntu講解gcc c編譯器。此外,本文只為該教...

關鍵字: c編譯器 gcc ubuntu

對于c編譯器,大家并不陌生。小編前期同樣為c編譯器帶來了諸多好文,如果你對c編譯器感興趣,不妨在本網站內進行搜索哦。

關鍵字: c編譯器 gcc 靜態(tài)庫

自學c編譯器的朋友都知道。c編譯器作為常用軟件之一,并非具備無法逾越難度。對于c編譯器的學習,往往需要具備一定耐心。本文對c編譯器的講解基于gcc c編譯器,同時本文承接“c編譯器so easy,gcc c編譯器生成、使...

關鍵字: c編譯器 gcc 靜態(tài)庫

程序開發(fā)人員大多接觸過c編譯器,請注意,不要將c編譯器和編輯器弄混淆哦。本文對c編譯器的講解,同樣基于gcc c編譯器,本文主要目的在于對linux環(huán)境下gcc c編譯器生成和使用靜態(tài)庫和動態(tài)庫予以介紹。

關鍵字: c編譯器 gcc 靜態(tài)庫
關閉