• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            我的玻璃盒子

            (轉載)pragma指令

            #pragma指令對每個編譯器給出了一個方法,在保持與c,c++語言完全兼容的情況下, 
            給出主機或操作系統專有的特征。依據定義,編譯指示是機器或操作系統專有的,且 
            對每個編譯器都是不同的。 
            #pragma#pragma是語言符號字符串。它是給出特有編譯器指令和參量的字符序列。在 
            pragma后,可以編寫翻譯器作為預處理語言符號分析的任何文本。#pragma從屬于宏擴展。 
            #pragma后跟不同的編譯指令可實現不同的功能。這里列出它的幾個用法: 
            1.#pragma  comment(comment-type,[string])可將一個注視記錄放入一個對象文件或可執 
               行文件中。 
            2.#pragma  init_seg({complier/lib/user/  "section-name  "[,  "func-name]]}) 
               該指令制定一個影響啟動代碼實行順序的關鍵字或代碼段。 
            3.#pragma  pointers_to_members 
               該指令制定一個類成員的指針能否在其相關定義之前被說明,且用于控制該指針尺寸和 
               解釋該指針需要的代碼。 
            4..#pragma  pack([n)] 
               該指令制定結構和聯合成員的緊湊對齊。

            #pragma TRAP_PROC
            interrupt void isrTIM1(void)
            {
            // 17KHz 59us 加檔肺 牢磐反飄
            zTimer_++;
            COP_REFRESH;  // {asm sta aCOPCTL;}
            TIM1_FLAG_CLEAR; // READ_REG(aT1SC) // TOF1 甫 Clear
            }

            Pragma是什么?

            Pragma是什么?
            翻譯:SkyJacker
            后附英文原文。

            (譯者注:
            一句話,pragma就是為了讓編譯器編譯出的C或C++程序與機器硬件和操作系統保持完全兼容而定義的宏擴展,
            #pragma是和特定編譯器相關的。)
            兩部分:
            1.Pragma說明;
            2.Pragma的語法。

            一、Pragma說明(Directives)

            C和C++程序的每次執行都支持其所在的主機或操作系統所具有的一些獨特的特點。
            一些程序,例如,需要精確控制數據存放的內存區域或控制某個函數接收的參數。
            #pragma指示為編譯器提供了一種在不同機器和操作系統上編譯以保持C和C++完全兼容的方法。?
            Pragmas是由機器和相關的操作系統定義的,通常對每個編譯器來說是不同的。

            二、語法(Syntax)

            #pragma token-string(特征字符串)

            特征字符串是一連串的字符,就是要給一個特定編譯器提供說明和編譯意見。

            符號(#)必須是pragma所在那一行的第一個非空格字符;
            #號和pragma之間可以有任意個空格符。
            在#pragma之后,是可以被編譯器解析的預處理特征字符。
            一般認為,#pragma屬于宏擴展。
            如果編譯器發現不認識的pragma,會提出警告,但繼續編譯下去。

            Pragmas可以用在條件聲明上,提供最新的功能性的預處理程序,或者提供給編譯器定義執行的信息。
            C和C++編譯器認可如下pragmas:
            alloc_text
            comment //注釋
            init_seg1 
            optimize  //最優化
            auto_inline
            component  //組成部件
            inline_depth
            pack       //包
            bss_seg
            data_seg
            inline_recursion  //內嵌遞歸
            pointers_to_members1
            check_stack
            function   
            intrinsic  //內在的
            setlocale
            code_seg
            hdrstop
            message 
            vtordisp1
            const_seg
            include_alias
            once
            warning

            這是MSDN的一篇文章,原作者曾經想使用
            #pragma pack(1) // 用GCC在MIPS平臺上將結構體成員結合到一塊連續的內存塊,但是沒有做到。

            在linux環境下使用intel-based GCC,#pragma pack(1)可以工作。

            建議參考具體編譯器的文檔,在里面應該有pragma的說明。

            ---------------------------------------原文-------------------------------------------

            Pragma Directives
            Each implementation of C and C++ supports some features unique to its host machine or operating system.

            Some programs, for instance, need to exercise precise control over the memory areas where data is placed or

            to control the way certain functions receive parameters.
            The #pragma directives offer a way for each compiler
            to offer machine- and operating-system-specific features
            while retaining overall compatibility with the C and C++
            languages. Pragmas are machine- or operating-system-specific by definition,
            and are usually different for every compiler.

            Syntax

            #pragma token-string

            The token-string is a series of characters that gives a specific compiler instruction and arguments,
            if any.

            The number sign (#) must be the first non-white-space character on the line containing the pragma;

            white-space characters can separate the number sign and the word pragma.
            Following #pragma, write any text that the translator can parse as preprocessing tokens.
            The argument to #pragma is subject to macro expansion.

            If the compiler finds a pragma it does not recognize, it issues a warning, but compilation continues.

            Pragmas can be used in conditional statements, to provide new preprocessor functionality,
            or to provide implementation-defined information to the compiler.
            The C and C++ compilers recognize the following pragmas:

            alloc_text comment init_seg1 optimize
            auto_inline component inline_depth pack
            bss_seg data_seg inline_recursion pointers_to_members1
            check_stack function intrinsic setlocale
            code_seg hdrstop message vtordisp1
            const_seg include_alias once warning

            This is an article from MSDN, I ever wanted to use
            #pragma pack(1) //which can combine structure members to one continuous memory block
            on MIPS platform using GCC, but it doesn't work.

            See the compiler's document, it should be illustrated there.

            Under linux env using intel-based GCC, it works.

            posted on 2008-01-24 16:31 深藍色系統 閱讀(188) 評論(0)  編輯 收藏 引用

            導航

            <2009年11月>
            25262728293031
            1234567
            891011121314
            15161718192021
            22232425262728
            293012345

            統計

            常用鏈接

            留言簿(75)

            隨筆分類

            隨筆檔案

            文章分類

            文章檔案

            搜索

            最新評論

            閱讀排行榜

            評論排行榜

            色综合久久夜色精品国产| 一本久道久久综合狠狠爱| 久久久久久综合一区中文字幕| 91精品国产91久久| 亚洲国产天堂久久久久久| 国产午夜精品久久久久免费视| 91精品国产综合久久香蕉 | 丰满少妇人妻久久久久久| 嫩草影院久久国产精品| 影音先锋女人AV鲁色资源网久久| 久久被窝电影亚洲爽爽爽| 伊人久久大香线蕉AV色婷婷色| 一级做a爰片久久毛片人呢| 久久国产劲爆AV内射—百度| 精品久久久无码中文字幕天天| 久久久久久亚洲AV无码专区| 人人狠狠综合久久亚洲高清| 久久久精品人妻一区二区三区四 | 久久无码一区二区三区少妇| 国产成人久久AV免费| 亚洲AV日韩精品久久久久久久| 久久精品成人免费观看97| 久久精品黄AA片一区二区三区 | 99久久精品毛片免费播放| 人人妻久久人人澡人人爽人人精品 | 99精品久久精品一区二区| 无码国内精品久久综合88| 久久久久国产视频电影| 国产精品xxxx国产喷水亚洲国产精品无码久久一区| 超级碰碰碰碰97久久久久| 一本久道久久综合狠狠躁AV| 久久综合成人网| 久久国产精品无| 欧美日韩精品久久久免费观看| 无码任你躁久久久久久| 伊人情人综合成人久久网小说 | 久久影视综合亚洲| 久久免费99精品国产自在现线 | 久久久久久久久久久精品尤物| 狠狠色丁香久久婷婷综合图片| 伊人久久无码精品中文字幕|