質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

89.13%

使っている変数に対して、「使用されない変数」と出る。

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 121

submaru

score -3

cc -Wall -W ファイル名
でコンパイルした際、宣言して使っているにも関わらずコンパイル時に「使用されない変数」と出てきてしまいます。原因として考えられるのはどんなことですか?-Dオプションを使っているのですが、関係はあるのでしょうか?

該当のソースコード

#include <stdio.h>
#include <stdlib.h>

#ifdef hairetsu_riyou

void bubble_sort_array(int a[], int n);
void selection_sort_array(int a[], int n);
void insertion_sort_array(int a[], int n);
void shell_sort_array(int a[], int n);

#else
typedef  struct {
        int key;
        int data;
}kozotai;

void bubble_sort_kozotai(kozotai a[] , int n);
void selection_sort_kozotai(kozotai a[] , int n);
void insertion_sort_kozotai(kozotai a[] , int n);
void shell_sort_kozotai(kozotai a[], int n);

#endif

int main(void){
        int i, tmp;

        int n=100;

#ifdef hairetsu_riyou
        int hairetsu[100]={412, 54, 595, 329, 24, 488, 313, 272, 129, 210,
                670, 516, 342, 541, 491, 640, 167, 117, 726, 206,
                474, 762, 153, 292, 1000, 607, 151, 661, 93, 270,
                737, 531, 641, 548, 299, 287, 547, 394, 550, 474,
                443, 261, 707, 503, 403, 739, 226, 646, 778, 588,
                427, 169, 477, 572, 412, 299, 88, 321, 54, 778,
                541, 680, 210, 272, 288, 276, 405, 307, 424, 668,
                756, 255, 190, 449, 35, 435, 91, 486, 58, 408,
                4, 63, 534, 329, 701, 65, 256, 311, 586, 403,
                459, 254, 291, 333, 42, 343, 418, 512, 164, 56};

        for(i=0;i<n;i++){
                printf("hairetsu[%d]= %d\n" , i,  hairetsu[i]);
        }

#ifdef BUB
        bubble_sort_array(hairetsu ,n);
#endif
#ifdef SEL
        selection_sort_array(hairetsu, n); 
#endif
#ifdef INS
        insertion_sort_array(hairetsu, n);
#endif
#ifdef SHL
        shell_sort_array(hairetsu, n);
#endif

        printf("\n\nソート後\n\n");
        for(i=0;i<n;i++){
                printf("hairetsu[%d]= %d\n" , i,  hairetsu[i]);
        }

        tmp = hairetsu[9]; hairetsu[9] = hairetsu[89]; hairetsu[89] = tmp;
        tmp = hairetsu[49]; hairetsu[49] = hairetsu[59]; hairetsu[59] = tmp;
        printf("\n\nほぼソート済\n\n");
        for(i=0;i<n;i++){
                printf("hairetsu[%d]= %d\n" , i,  hairetsu[i]);
        }
#ifdef BUB
        bubble_sort_array(hairetsu ,n);
#endif
#ifdef SEL
        selection_sort_array(hairetsu, n);
#endif
#ifdef INS
        insertion_sort_array(hairetsu, n);
#endif
#ifdef SHL
        shell_sort_array(hairetsu, n);
#endif

        printf("\n\nソート後\n\n");
        for(i=0;i<n;i++){
                printf("hairetsu[%d]= %d\n" , i,  hairetsu[i]);
        }



#else
        kozotai table[100];

        for(i=0;i<n;i++){
                table[i].key=i;
                table[i].data=rand()%893;
        }

        for(i=0;i<n;i++){
                printf("table[%d].key= %d table[%d].data= %d\n" , i,  table[i].key, i, table[i].data);
        }

#ifdef BUB
        bubble_sort_kozotai(table, n);
#endif
#ifdef SEL
        selection_sort_kozotai(table, n);
#endif
#ifdef INS
        insertion_sort_kozotai(table, n);
#endif
#ifdef SHE
        shell_sort_kozotai(table, n);
#endif

        printf("\n\nソート後\n\n");

        for(i=0;i<n;i++){
                printf("table[%d].key= %d table[%d].data= %d\n" , i,  table[i].key, i, table[i].data);
        }
#endif

        return 0;

}


#if hairetsu_riyou

void bubble_sort_array(int a[], int n);
        int i, j, t;
        for (i = 0; i < n-1; i++) {
          j = n;
          while (j > i) {
            if (a[j-1] > a[j]) {
              t = a[j];
              a[j] = a[j-1];
              a[j-1] = t;
            }
            j--;
          }
        }
}


void selection_sort_array(int a[], int n){
        int i, j, t, lowest, lowkey;
        for (i = 0; i < n-1; i++) {
          lowest = i;
          lowkey = a[i];
          for (j = i+1; j < n; j++) {
            if (lowkey > a[j]) {
              lowest = j;
              lowkey = a[j];
          }
          t = a[lowest];
          a[lowest] = a[i];
          a[i] = t;
        }
}


void insertion_sort_array(int a[], int n){
        int i, j, t;

        for(i=1; i<n; i++ ){
                j=i;
                while(j>=1 &&  a[j-1] >a[j]){
                        t = a[j];
                        a[j]=a[j-1];
                        a[j-1]=t;
                        j--;
                }
        }
}

void shell_sort_array(int a[], int n){
        int i, j, k, t, w, hikaku=0, koukan=0;

        t = n / 2;
        while (t > 0) {
          for (i = 1; i <= t; i++) {
            for (j = i + t; i <= n; j = j + t) {
              w = a[j];
              k = j - t;
              while (k > 0) {
                if (a[k] <= w) {break;}
                a[k+t] = a[k];
                k = k - t;
              }
              a[k+t] = w;
            }
          }
          t = t / 2;
        }
}

#else
void bubble_sort_kozotai(kozotai a[], int n){

  int i, j;
  kozotai t;

  for (i = 0; i < n-1; i++) {
    j = n;
    while (j > i) {
      if (a[j-1].data > a[j].data) {
        t = a[j];
        a[j] = a[j-1];
        a[j-1] = t;
      }
      j--;
    }
  }
}

void selection_sort_kozotai(kozotai a[], int n){

  int i, j, lowest, lowkey;
  kozotai t;

  for (i = 0; i < n-1; i++) {
    lowest = i;
    lowkey = a[i].data;
    for (j = i+1; j < n; j++) {
      if (a[lowest].data > a[j].data) {
        lowest = j;
        lowkey = a[j].data;
      }
    }
    t = a[lowest];
    a[lowest] = a[i];
    a[i] = t;
  }
}

void insertion_sort_kozotai(kozotai a[], int n){

  int i, j;
  kozotai t;

  for(i=1; i<n; i++ ){
    j=i;
    while(j>=1 &&  a[j-1].data >a[j].data){
      t = a[j];
      a[j]=a[j-1];
      a[j-1]=t;
      j--;
    }
  }
}

void shell_sort_kozotai(kozotai a[], int n){

  int i, j, k, t;
  kozotai w;

  t = n / 2;
  while (t > 0) {
    for (i = 1; i <= t; i++) {
      for (j = i + t; i <= n; j = j + t) {
        w = a[j];
        k = j - t;
        while (k > 0) {
          if (a[k].data <= w.data) {break;}
          a[k+t] = a[k];
          k = k - t;
        }
        a[k+t] = w;
      }
    }
    t = t / 2;
  }
}

#endif
  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

質問への追記・修正、ベストアンサー選択の依頼

  • Daregada

    2020/07/01 02:04

    実際のソースコードを「```C」と「```」の間に貼り付けてください。

    キャンセル

回答 2

checkベストアンサー

+1

2か所で「unused variable」の警告が出ていますね。
main関数の冒頭で宣言しているtmpは、hairetsu_riyouをdefineしない限り使われないので、宣言自体を#ifdef hairetsu_riyouのブロックの中で実際にtmpを使っているところ(62行目あたり)で、

int tmp = hairetsu[9];


とでもしておけばいいでしょう。

おそらく、「使っているのに警告が出る」と思っていらっしゃるのは、selection_sort_kozotai関数の中で宣言しているlowkeyのことではないですか。lowkeyが出てくる箇所を抜粋すると、

int i, j, lowest, lowkey;
lowkey = a[i].data;
lowkey = a[j].data;

宣言して値を設定しているだけで、その値を使っていないですね。

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/01 03:03 編集

    値を使っていないとそのような警告が出るのですね。今後気を付けます。

    キャンセル

  • 2020/07/01 03:06

    selection_sort_arrayは現在の状態だと「#if hairetsu_riyou」と「#else」の間にあって、コンパイルされないからです。
    ちなみに、hairetsu_riyouをdefineすると、警告じゃなくていろいろとエラーが...関数定義しているのに先頭行で「;」で終わっていたりとか。

    キャンセル

  • 2020/07/01 03:07

    っていつのまにかコメント内容が変わっていた。

    キャンセル

  • 2020/07/01 03:11

    エラーも出てしまうのですか。。もう少し改善できるように頑張りたいと思います。

    キャンセル

0

宣言しているだけでどこにも使われないので使われていないというメッセージが出ています。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2020/07/01 02:48

    それはわかっています。使っているはずなんですけどね。。。

    キャンセル

  • 2020/07/01 04:11

    「使う」とは何かということですね。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 89.13%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る