This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

ソースコードの表記方法 - タブの使い方

タグではなく、タブの質問です(笑)。

投稿するときにソースを貼り付けようとすると、タブが表示されないため、インデントがずれてしまいます。

4文字タブとか8文字タブが設定できるのでしょうか?

それとも別にエディタのほうで、タブをスペースに置き換えなければいけないのでしょうか?

お教えください。よろしくお願いします。

 

 

  • Massaさま


    貼り付けはどのようにされてますでしょうか?

    投稿画面の上に並ぶメニュの中の をクリックしていただいて貼り付け画面をだし、
    そこにペーストするとインデントも反映されると思うのですがいかがでしょうか?


     

  • 貼り付けは、IARのエディタかCCEのエディタからコピーアンドペーストしています。


    すると、タブがスペースに置き換えられてしまい、2タブの位置が8文字目でなく3文字目になってしまいます。


    そのため、スペースでとったインデントが後ろの方に行ってしまいタブでとったインデントは前にきてしまいます。


    また、フォントがプロポーショナルのため後ろに書いたコメントの位置が合いません。固定幅フォントの設定はできないのでしょうか。


    例を次にペーストします。最初はタブで、2番目はスペースでインデントを作ってあるので、4文字タブ設定したエディタ上ではまったく同じに見えますが、下記のようにごちゃごちゃしてしまいます。まだスペースで置き換えたほうが見やすいですが。


    また、// で表示されるコメントもエディタではすべて頭をあわせたものですが、予測できない位置に表示されています。


    行の後のコメントは、アセンブラでは必須になりますので、かなり見にくくなってしまいます。最後に、IARのリストの例を貼付します。ニューモニックを追うのも困難になっていることがおわかりいただけると思います。


    なんとかならないでしょうか? よろしくお願いします。


    ・タブによるインデント


    void initADC(void)
    {
     int  i;
     
     ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6;
               // Setup ADC12, ref., sampling time
     ADC12CTL1 = SHP;      // サンプリングタイマー
        ADC12MCTL0 = INCH_10 + SREF_1;          // チャネル A10(温度), Vref+
        ADC12IE = 0x01;                         // ADC12IFG.0の割り込み許可
     for (i = 0; i
       ;                  // 少し待ってやる
     ADC12CTL0 |= ENC;                       // 変換を許可


    }


    ・スペースによるインデント


    void initADC(void)
    {
        int  i;
     
        ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_6;
                                                // Setup ADC12, ref., sampling time
        ADC12CTL1 = SHP;                        // サンプリングタイマー
        ADC12MCTL0 = INCH_10 + SREF_1;          // チャネル A10(温度), Vref+
        ADC12IE = 0x01;                         // ADC12IFG.0の割り込み許可
        for (i = 0; i
               ;                                // 少し待ってやる
        ADC12CTL0 |= ENC;                       // 変換を許可


    }


    ・IARでのリスト


         27         
         28            while(1)  {
         29             for(x = 50000; x > 0; x--, j++);
       \                     ??main_0:
       \   000036   3F53         ADD.W   #0xffff, R15
       \   000038   1E53         ADD.W   #0x1, R14
       \                     ??main_1:
       \   00003A   0F93         CMP.W   #0x0, R15
       \   00003C   FC23         JNE     ??main_0
         30             P1OUT ^= 0x04;
       \   00003E   E2E22100     XOR.B   #0x4, &0x21
         31             func(j);
       \   000042   0C4E         MOV.W   R14, R12
       \   000044   B012....     CALL    #func
       \                     ??main_2:
       \   000048   3F4050C3     MOV.W   #0xc350, R15
       \   00004C   F63F         JMP     ??main_1
       \   00004E                REQUIRE WDTCTL
       \   00004E                REQUIRE P1OUT
       \   00004E                REQUIRE P1DIR
         32            }
         33           
         34          }

  • massa様


    以下のURLをご参考に、HTMLを直接編集されてはいかがでしょうか。


    http://jmblog.jp/archives/80


    当コミュニティでは、記事を投稿する際に表示されるエディタ欄の枠の上にある"HTML"ボタンをクリックすると


    HTMLを直接入力できます。


     


    下記はCCEのエディタからCTRL+Cでコピーしたソースを

    タグとタグで囲まれた領域に


    CTRL+Vしてみた例です。


     



    void main(void)
    {
    volatile unsigned int i;

    WDTCTL = WDTPW + WDTHOLD; // Stop WDT

    // initialize uart
    P5SEL = 0xC0; // P5.6,7 = USCI_A1 TXD/RXD
    UCA1CTL1 |= UCSWRST; // **Put state machine in reset**
    UCA1CTL1 |= UCSSEL_2; // SMCLK
    UCA1BR0 = 9; // 1MHz 115200 (see User's Guide)
    UCA1BR1 = 0; // 1MHz 115200
    UCA1MCTL |= UCBRS_1 + UCBRF_0; // Modulation UCBRSx=1, UCBRFx=0
    UCA1CTL1 &= ~UCSWRST; // **Initialize USCI state machine**
    UCA1IE |= UCRXIE; // Enable USCI_A0 RX interrupt

     



  • 宮島様


    レス、ありがとうございます。


    私はメーラにHTMLメール拒否を設定するくらいのHTML嫌いなのですが、これしかなければやるっきゃないですね。


    今度タグを入れて試してみます。


    で、タブの数は4とか8とか設定できるのですか。


    これからもよろしく。


     

  • Massa様


     


    改めて、単純なソースコードで実験してみます。


    #元ソースを添付いたしました。


     



    #include

    int main(void)
    {
    // comment1
    printf("Hello World!\n"); // comment2
    printf("Hello World!\n"); // comment3

    return 0;
    }

     


    行頭のインデントはタブ1つ、6行目のコメントの前にはタブ2つ、7行目のコメントの前にはスペース7つを挿入してあります。

    タブ4の場合に6行目と7行目のコメントの開始位置が揃って表示されますが、

    書き込みを投稿して表示した際には、タブ8として表示されるようです。

     

    ソースコードのインデントの崩れが気になる場合は、

    ソースコードを表示したウィンドウをスクリーンショットして添付するなどしてみてはいかがでしょうか。



  • 再度失礼いたします。

    やはりエディタとは環境が全く違うので互換がうまくいかないようです。


    US にも問い合わせてみたのですが、、
    やはり word を使うとうまくいくのではということです。
    1) 一度ソースを word にはりつけていただいてから
    投稿画面で貼り付ける。
    2) 最初にご提案したように この投稿を書き込む画面の上に並んでいるメニューの アイコンをクリックし、
    word 貼り付け用画面をだしてそこに貼り付けていただく。

    再度お試しいただけますでしょうか。

    またこれでもうまくいかないようでしたら
    最後の手段としては投稿に添付していただくのが一番よいかと思います。

    ご面倒をおかけしてすみませんが、どうぞよろしくお願いいたします。


     

  • Administrator様、 MIYAJIMA様


    貼付方法の手法の解説、ありがとうございます。


    画面の美しさでは、MIYAJIMA様のHTML貼り付けがきれいそうですが、これからいろいろ試してみたいと思います。


    丁寧なアドバイス、本当にありがとうございました。