日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

現(xiàn)代編譯器的可讀性勝過調(diào)試

星星科技指導(dǎo)員 ? 來源:嵌入式計算設(shè)計 ? 作者:Colin Walls ? 2022-07-01 09:10 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

編寫代碼時,您的首要任務(wù)應(yīng)該是可讀性。大量時間花在調(diào)試和維護代碼上,通常遠(yuǎn)遠(yuǎn)超過最初編寫代碼所花費的時間。因此,使該過程高效是必不可少的??紤]到未來人類讀者的需求(可能是你,當(dāng)然?。┍仍噲D讓代碼“高效”更重要——這項工作主要可以留給現(xiàn)代編譯器。

這種考慮意味著代碼應(yīng)該非常仔細(xì)地格式化和對齊,并且語言結(jié)構(gòu)應(yīng)該盡可能簡單和透明。有許多已發(fā)布的指南可以幫助解決這些問題。但是,創(chuàng)建可讀代碼并不止于此。

當(dāng)你編譯代碼時,編程語言被翻譯成機器指令。這是顯而易見的。然而,編譯器實際接收的是一個字符流;有些是實際代碼,但可能有一些不打算翻譯的塊,其他文本可能僅供人類使用:

文檔——代碼中的注釋

臨時刪除的代碼——調(diào)試過程的一部分,但它可能會持續(xù)存在

特殊調(diào)試/跟蹤代碼

每一個的實現(xiàn)都會對可讀性產(chǎn)生一些影響。

文檔

每個人都知道評論是個好主意,但我們大多數(shù)人都很懶惰。但是,一些努力是非常值得的。舊式/*.。.*/注釋符號是可以接受的,但新的行尾//。..形式更清晰。仍然需要護理。例如:

int number; // input count

char c; // single character buffer

char buffer[99]; // the input line

很難跟上。對齊就是一切:

int number; // input count

char c; // single character buffer

char buffer[99]; // the input line

并且不要使用標(biāo)簽;它們不是便攜式的。

臨時代碼刪除

在軟件開發(fā)過程中,想要對編譯器“隱藏”部分代碼——將其關(guān)閉——并不少見。執(zhí)行此操作的傳統(tǒng)方法是“注釋掉”——在代碼前加/* ,在后加*/。雖然做起來很快,但它很容易失效,因為編譯器不一定支持注釋嵌套。較新的//表示法稍微好一點,但應(yīng)用和刪除很繁瑣,并且仍然容易出錯。

實現(xiàn)此結(jié)果的最佳方法是使用預(yù)處理器指令,因此:

#if 0

#endif

Debug/Trace code

A particular kind of temporarily visible code is instrumentation – extra code added for debugging and/or tracing. Although modern debuggers and tracing tools can do a remarkable job, sometimes instrumenting the code is the only way to glean visibility and figure out exactly what is happening.

The usual way to accommodate this need is using pre-processor directives, as before, but using a symbol to switch them on and off:

#ifdef DEBUG_TRACE

#endif

So, when the symbol DEBUG_TRACE is defined, the debug code is included.

A slightly different approach is to code it like this:

#ifndef NDEBUG

#endif

Although this double negative does seem confusing, some consistency is introduced, as this symbol is used to enable the standard assert() macro. The symbol needs to be defined to suppress debug mode.

審核編輯:郭婷

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 處理器
    +關(guān)注

    關(guān)注

    68

    文章

    20339

    瀏覽量

    255346
  • 編譯器
    +關(guān)注

    關(guān)注

    1

    文章

    1673

    瀏覽量

    51961
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    C語言中一些令人震驚的結(jié)構(gòu)介紹

    。不管你相不相信,上面的例子是完全合乎語法的。問題是編譯器如何處理它?水平不高的編譯作者實際上會爭論這個問題,根據(jù)最處理原則,編譯器應(yīng)當(dāng)能處理盡可能所有合法的用法。因此,上面的代碼被處理成: c
    發(fā)表于 12-23 08:15

    單片機開發(fā)功能安全中編譯器

    的問題是,防御編碼和外部數(shù)據(jù)訪問等實踐并不屬于編譯器認(rèn)可的領(lǐng)域。例如,C和C ++都沒有為內(nèi)存損壞留出任何余地,因此,除非在沒有這種損壞的情況下可以訪問旨在防止內(nèi)存損壞的代碼,否則在對代碼進行優(yōu)化
    發(fā)表于 12-01 06:44

    性能突破 | SpacemiT-X60 在 LLVM 編譯器上實現(xiàn) 16% 顯著提升

    2025年10月,在北美RISC-V峰會上,Igalia編譯器工程師Mikhail發(fā)表專題演講《Unlocking15%MorePerformance
    的頭像 發(fā)表于 11-21 18:04 ?9139次閱讀
    性能突破 | SpacemiT-X60 在 LLVM <b class='flag-5'>編譯器</b>上實現(xiàn) 16% 顯著提升

    開源鴻蒙技術(shù)大會2025丨編譯器與編程語言分論壇:語言驅(qū)動系統(tǒng)創(chuàng)新,編譯賦能生態(tài)繁榮

    在萬物智聯(lián)的時代背景下,操作系統(tǒng)底層能力的構(gòu)建離不開編程語言與編譯器的關(guān)鍵支撐。作為開源鴻蒙生態(tài)的核心技術(shù),語言設(shè)計與編譯器、虛擬機實現(xiàn)的進步直接關(guān)系到開發(fā)效率、運行性能與系統(tǒng)安全。本次分論壇聚焦
    的頭像 發(fā)表于 11-20 17:24 ?1190次閱讀
    開源鴻蒙技術(shù)大會2025丨<b class='flag-5'>編譯器</b>與編程語言分論壇:語言驅(qū)動系統(tǒng)創(chuàng)新,<b class='flag-5'>編譯</b>賦能生態(tài)繁榮

    匯編語言的起源

    (opcode),比如加法指令就是00000011。編譯器的作用,就是將高級語言寫好的程序,翻譯成一條條操作碼。 對于人類來說,二進制程序是不可讀的,根本看不出來機器干了什么。為了解決可讀性的問題,以及偶爾
    發(fā)表于 11-20 07:19

    GCC編譯器,怎么才能實現(xiàn)c文件中未被調(diào)用的函數(shù),不會被編譯呢?

    GCC編譯器,怎么才能實現(xiàn)c文件中未被調(diào)用的函數(shù),不會被編譯?有什么編譯選項可以設(shè)置嗎? 移植代碼,有些函數(shù)沒被調(diào)用的函數(shù)想留在代碼里,但不想被編譯,
    發(fā)表于 09-28 12:25

    如何在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6?

    在Keil中將NuMicro BSP從Arm編譯器5遷移到編譯器6!
    發(fā)表于 08-20 06:29

    Aurix Development Studio 中是否有允許在 SCR 端添加調(diào)試編譯器選項的功能?

    ELF 文件中的調(diào)試信息,其中沒有調(diào)試符號,并且我無法調(diào)試 SCR 代碼。Aurix Development Studio 中是否有允許在 SCR 端添加調(diào)試編譯器選項的功能?
    發(fā)表于 07-21 06:00

    進迭時空同構(gòu)融合RISC-V AI CPU的Triton算子編譯器實踐

    Triton是由OpenAI開發(fā)的一個開源編程語言和編譯器,旨在簡化高性能GPU內(nèi)核的編寫。它提供了類似Python的語法,并通過高級抽象降低了GPU編程的復(fù)雜,同時保持了高性能。目前
    的頭像 發(fā)表于 07-15 09:04 ?2254次閱讀
    進迭時空同構(gòu)融合RISC-V AI CPU的Triton算子<b class='flag-5'>編譯器</b>實踐

    邊緣設(shè)備AI部署:編譯器如何實現(xiàn)輕量化與高性能?

    電子發(fā)燒友網(wǎng)綜合報道 AI編譯器是專門為人工智能(AI)和機器學(xué)習(xí)(ML)模型設(shè)計的編譯器,其核心目標(biāo)是將高級的AI模型描述(如計算圖、神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu))轉(zhuǎn)換為特定硬件平臺(如CPU、GPU、FPGA
    的頭像 發(fā)表于 07-06 05:49 ?6977次閱讀

    編譯器功能安全驗證的關(guān)鍵要素

    在汽車、工業(yè)、醫(yī)療等安全關(guān)鍵型應(yīng)用中,確保功能安全合規(guī)需要嚴(yán)格的工具鏈驗證。開發(fā)安全關(guān)鍵型軟件的企業(yè)必須遵守ISO 26262、IEC 61508、ISO 62304等國際標(biāo)準(zhǔn)對編譯器工具鏈進行全面的驗證。
    的頭像 發(fā)表于 07-05 13:37 ?1719次閱讀

    兆松科技ZCC編譯器全面支持芯來科技NA系列處理

    近日,兆松科技(武漢)有限公司(以下簡稱“兆松科技”)宣布正式發(fā)布高性能RISC-V編譯器ZCC 4.0.0版本。
    的頭像 發(fā)表于 06-11 09:56 ?2032次閱讀

    RISC-V架構(gòu)下的編譯器自動向量化

    高性能算力生態(tài)的建設(shè),正投入編譯器自動向量化優(yōu)化等多項關(guān)鍵技術(shù),全面助力RISC-V的高性能發(fā)展。RISC-V向量設(shè)計SpacemiT在現(xiàn)代CPU中,向量支持是算力的
    的頭像 發(fā)表于 06-06 16:59 ?1457次閱讀
    RISC-V架構(gòu)下的<b class='flag-5'>編譯器</b>自動向量化

    如何使用VSCode+gdbserver遠(yuǎn)程調(diào)試ZMC900E

    。前言嵌入式Linux系統(tǒng),由于系統(tǒng)資源的匱乏,通常無法安裝本地編譯器進行本地開發(fā),而需要在借助一臺主機進行交叉開發(fā)。一般情況下,在主機安裝相應(yīng)的交叉編譯器
    的頭像 發(fā)表于 05-22 11:40 ?1247次閱讀
    如何使用VSCode+gdbserver遠(yuǎn)程<b class='flag-5'>調(diào)試</b>ZMC900E

    RVCT編譯器是否比GNU的編譯器的代碼執(zhí)行速度更快?

    使用FX3S遇到了RVCT編譯器的問題。 1、在SDK的release note中有支持RVCT的描述, 但是在EZ USB Suite的設(shè)置中沒有找到RVCT的選項, 請問支持的具體版本
    發(fā)表于 05-08 07:49
    佳木斯市| 华池县| 城固县| 富川| 伊宁县| 甘肃省| 达日县| 佛坪县| 韶关市| 尼木县| 吉林市| 宁海县| 渭源县| 长岭县| 寻乌县| 梁河县| 和龙市| 永定县| 日喀则市| 呈贡县| 唐海县| 望谟县| 抚宁县| 唐海县| 临泽县| 孟州市| 分宜县| 区。| 吴旗县| 九江县| 左云县| 深水埗区| 郓城县| 年辖:市辖区| 娱乐| 濉溪县| 崇左市| 湖北省| 辽阳市| 望江县| 宝清县|