【MISRA C 2012】Rule 5.1 外部標識符應該是不同的

  • 1. 規則
    • 1.1 原文
    • 1.2 分類
  • 2. 關鍵描述
  • 3. 代碼實例

1. 規則

1.1 原文

Rule 5.1 External identifiers shall be distinct
Category Required
Analysis Decidable, System
Applies to C90, C99

1.2 分類

規則5.1:外部標識符應該是不同的
Required必須類規范。

2. 關鍵描述

該規則要求不同的外部標識符在實現所施加的限制內是不同的。

distinct的定義取決于正在使用的C語言的實現和版本:

?在C90中,最低要求是外部標識符的前6個字符是重要的,但它們的大小寫不需要是重要的;

?在C99中,最低要求是外部標識符的前31個字符是有效的,每個通用字符或相應的擴展源字符占用6到10個字符。

在實踐中,許多實現提供了更大的限制。例如,C90中的外部標識符通常是區分大小寫的,并且至少前31個字符是有效的

如果兩個標識符僅在非重要字符上不同,則行為未定義。如果考慮可移植性,則使用標準中指定的最小限制來應用此規則將是謹慎的。長標識符可能會損害代碼的可讀性。雖然許多自動代碼生成系統會生成較長的標識符,但將標識符長度保持在遠低于此限制的水平是有充分理由的。注意:在C99中,如果擴展源字符出現在外部標識符中,并且該字符沒有對應的通用字符,則標準沒有指定它占用多少字符。

3. 代碼實例

例1,規范中例程:
在下面的示例中,所有定義都出現在同一個翻譯單元中。所討論的實現在外部標識符中支持31個重要的區分大小寫的字符

/* 1234567890123456789012345678901********* Characters */
int32_t engine_exhaust_gas_temperature_raw;
int32_t engine_exhaust_gas_temperature_scaled; /* Non-compliant */
/* 1234567890123456789012345678901********* Characters */
int32_t engine_exhaust_gas_temp_raw;
int32_t engine_exhaust_gas_temp_scaled; /* Compliant */

例2,
在下面的不兼容示例中,該實現在外部標識符中支持6個不區分大小寫的重要字符。兩個翻譯單元中的標識符不同,但其有效字符并不明顯

/* file1.c */
int32_t abc = 0;
/* file2.c */
int32_t ABC = 0;

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/161929.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/161929.shtml
英文地址,請注明出處:http://en.pswp.cn/news/161929.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

1、基礎入門——操作系統文件下載反彈SHELL防火墻繞過

名詞解釋 POC:驗證漏洞存在的代碼; EXP:利用漏洞的代碼; payload:漏洞利用載荷, shellcode:漏洞代碼, webshell:特指網站后門; 木馬:強調控制…

【STL】set, map, multiset, multimap的介紹及使用

TOC 目錄 關聯式容器 樹形結構與哈希結構 鍵值對 set set的定義方式 set的使用 multiset map map的介紹 map的定義方式 map的插入 insert函數的參數 insert函數的返回值 map的查找 map的刪除 map的[ ]運算符重載 map的迭代器遍歷 map的其他成員函數 multim…

Day40:139.單詞拆分、背包問題總結

文章目錄 139.單詞拆分思路代碼實現 背包問題總結背包類型遞推公式 139.單詞拆分 題目鏈接 思路 確定dp數組以及下標的含義 dp[i] : 從0開始長度為i的字符串是否可以拆分為一個或多個在字典中出現的單詞確定遞推公式 如果確定dp[j] 是true,且 [j, i] 這個區間的子…

【bug】uniapp的image組件渲染gif圖,只有第一次點擊的時候有動效,需要每次點擊都有gif效果,已解決

前兩天遇到的問題,暫時沒有解決,就擱置了。 不解決又難受,還好今天解決了,記錄下 需求: 兩個gif圖,分別代表點擊之后的男生和女生,并且有兩個靜態的男生和女生圖片 當男生靜態圖被點擊的時候切…

關于ElectronVue3中集成訊飛星火AI

前言:我的最終目的是為了在QQ上集成一個AI機器人,因此在這里先實現一個簡單的集成 先上效果圖 總體還是很簡單的,我在調用websock獲取回復內容的基礎上另外集成了一個事件總線,讓我們在調用獲取消息的時候能夠更加方便快捷 工具代…

聯想拯救者Lenovo Legion R9000K 2021H(82N6)原裝出廠Windows10/Win11系統ISO鏡像

鏈接:https://pan.baidu.com/s/13NkeCXNdV0Ib5eeRnZUeAQ?pwdnlr7 提取碼:nlr7 拯救者筆記本電腦原廠WIN系統自帶所有驅動、出廠主題壁紙、系統屬性專屬LOGO標志、Office辦公軟件、聯想電腦管家等預裝程序 所需要工具:16G或以上的U盤 文…

啟發式搜索算法-人工智能

第1關:評估函數和啟發信息 第2關:A*搜索算法 class Array2D:"""說明:1.構造方法需要兩個參數,即二維數組的 寬和高2.成員變量w和h是二維數組的寬和高3.使用:‘對象[x][y]’可以直接取到相應的值4.數組的默認值都是0"""def __init__(s…

使用PySpark 結合Apache SystemDS 進行信號處理分析 (離散傅立葉變換)的簡單例子

文章大綱 簡介 :什么是 SystemDS ?環境搭建與數據 準備數據預處理模型訓練 與 結果評估參考文獻簡介 :什么是 SystemDS ? SystemDS is an open source ML system for the end-to-end data science lifecycle from data integration, cleaning, and feature engineering, ov…

干貨分享丨客戶旅程管理的框架與案例

融合煥新,數字化轉型打造客戶經營新旅程。本文圍繞該主題詳細描述了客戶旅程管理的框架,并通過實踐案例進一步驗證客戶旅程管理的價值。 以下內容根據行業知名企業專家劉勝強的分享整理,完整版內容請點擊文末“閱讀原文”觀看哦~ 一、客戶時代…

【libGDX】使用Mesh繪制矩形

1 前言 使用Mesh繪制三角形 中介紹了繪制三角形的方法,本文將介紹繪制正方形的方法。 libGDX 以點、線段、三角形為圖元,沒有提供繪制矩形內部的接口。要繪制矩形內部,必須通過三角形拼接而成,如下圖,是通過GL_TRIANGL…

基于JavaWeb+SSM+Vue家庭記賬本微信小程序系統的設計和實現

基于JavaWebSSMVue家庭記賬本微信小程序系統的設計和實現 源碼獲取入口前言主要技術系統設計功能截圖Lun文目錄訂閱經典源碼專欄Java項目精品實戰案例《500套》 源碼獲取 源碼獲取入口 前言 1.1選題背景 互聯網是人類的基本需求,特別是在現代社會,個人…

看不慣AI版權作品被白嫖!Stability AI副總裁選擇了辭職,曾領導開發Stable Audio

近日,OpenAI的各種大瓜真是讓人吃麻了。 而就在Sam Altmam被開除前兩天,可能沒太多人注意到Stability AI副總裁Newton—Rex因看不慣StabilityAI在版權保護上的行為選擇辭職一事。 大模型研究測試傳送門 GPT-4傳送門(免墻,可直接…

SPASS-聚類和判別分析

聚類與判別分析概述 基本概念 聚類分析 聚類分析的基本思想是找出一些能夠度量樣本或指標之間相似程度的統計量,以這些統計量為劃分類型的依據,把一些相似程度較大的樣本(或指標)聚合為一類,把另外一些彼此之間相似程…

C++那些事之string那些事

C那些事之string那些事 C11C17C20C23結論 當我們使用C時,庫的基礎知識比較熟悉,尤其是在C中創建字符串時使用的std::string。這無疑是對舊的C風格“字符串”(使用以空字符結尾的字符數組)的一種改進。然而,C標準庫在C1…

【Hello Go】Go語言網絡編程

Go語言網絡編程 Go語言程序服務端客戶端 Http程序 有關網絡的基本知識我之前的博客介紹的很詳細 這里就不再贅述了 這里主要講解下Go語言網絡編程的語法 網絡基礎 協議 Go語言程序 我們建立一個tcp鏈接的步驟為 socket bind listen accept 但是在Go語言中 我們并不需要前兩…

office word 使用筆記

office word 使用筆記 1. 功能1.1 格式快捷鍵1.2 復選框 2 遇到過的問題2.1 表格標題和表格距離過大 1. 功能 1.1 格式快捷鍵 復制格式:ctrl shift c 粘貼格式:ctrl shift v 1.2 復選框 方框位置和類型:“插入——高級符號——字體”選…

【追求卓越08】算法--排序算法

引導 今天開始介紹我們在工作中經常遇到的算法--排序。排序算法有很多,我們主要介紹以下幾種: 冒泡排序 插入排序 選擇排序 歸并排序 快速排序 計數排序 基數排序 桶排序 我們需要了解每一種算法的定義以及實現方式,并且掌握如何評…

LeetCode [簡單] 1. 兩數之和

給定一個整數數組 nums 和一個整數目標值 target,請你在該數組中找出 和為目標值 target 的那 兩個 整數,并返回它們的數組下標。 你可以假設每種輸入只會對應一個答案。但是,數組中同一個元素在答案里不能重復出現。 你可以按任意順序返回…

Leetcode——121 買賣股票的最佳時機

(超時。。。。。。&#xff09;除了暴力法我是真的。。。。。。 class Solution {public int maxProfit(int[] prices) {int len prices.length;int max0;for(int i0;i<len-1;i){for(int ji1;j<len;j){int income prices[j] - prices[i];if(income>max){maxincome;…

閃存組織結構概念

文章目錄 一、幾種不同類型閃存的參數&#xff1a;二、組織結構三、塊&#xff08;Block&#xff09;的結構擦除動作原理&#xff1a;寫操作讀操作 一、幾種不同類型閃存的參數&#xff1a; 參數項SLCMLCTLCQLC讀取時間/us20~2555~11075~170120~200寫入時間/us50~100400~15008…