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

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

新規登録して質問してみよう
ただいま回答率
85.48%
C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

Q&A

解決済

1回答

744閲覧

C言語でマイコン(H8/3664)のPWM周期とFTIOB~FTIODのDuty比を計算させたいがコンパイルでエラーが出る。

y_o

総合スコア12

C

C言語は、1972年にAT&Tベル研究所の、デニス・リッチーが主体となって作成したプログラミング言語です。 B言語の後継言語として開発されたことからC言語と命名。そのため、表記法などはB言語やALGOLに近いとされています。 Cの拡張版であるC++言語とともに、現在世界中でもっとも普及されているプログラミング言語です。

0グッド

0クリップ

投稿2018/10/29 17:03

編集2018/10/29 22:43

前提・実現したいこと

h8/3664マイコンのPWM周期と各FTIOB~FTIODのDuty比を
計算させてprintf("%",);で表示させたい。
各、計算に必要な要素はscanf("%",&);を使って入力する。

以下のエラーメッセージが表示されて、コンパイルが成功しません。
(linkingに問題が発生しているのでは?と考えていますが、原因がわかりません。)
醜い、コードですみません、どなたか助けて頂けない
でしょうか?

発生している問題・エラーメッセージ

PWM_DutyCycle.c:5:40: warning: variable 'Duty_Cycle_D'set but not use [-Wunused-but-set-variable]
PWM_DutyCycle.c:5:26: warning: variable 'Duty_Cycle_C'set but not use [-Wunused-but-set-variable]
PWM_DutyCycle.c:5:12: warning: variable 'Duty_Cycle_B'set but not use [-Wunused-but-set-variable]
PWM_DutyCycle.c:66:1⚠️ control reches end of non-void function[-Wunused-type]
collect2.exe:error: ld returned 1 exit status

該当のソースコード

ソースコード(C言語)は以下のように記述しました。

#include <stdio.h>
int main(void){
double CLOCK, IN_side_CLOCK, PWM;
double GRA, GRB, GRC, GRD;
double Duty_Cycle_B, Duty_Cycle_C, Duty_Cycle_D;
int CKS, TOB, TOC, TOD, i;

IN_side_CLOCK= 0.0; printf("Please CLOCK \n"); scanf("%lf", &CLOCK); printf("CLOCK is %lf.\n", CLOCK); printf("Please CKS \n"); scanf("%d", &CKS); printf("CKS is %d.\n", CKS); printf("Please TOB. If don't exist TOB, please integer bigger than 1.\n"); scanf ("%d", &TOB); printf("TOB is %d.\n", TOB); printf("Please TOC. If don't exist TOC, please integer bigger than 1. \n"); scanf ("%d", &TOC); printf("TOC is %d.\n", TOC); printf("Please TOD. If don't exist TOD, please integer bigger than 1. \n"); scanf ("%d", &TOD); printf("TOD is %d.\n", TOD); printf("Please GRA \n"); scanf("%lf", &GRA); printf("GRA is %lf.\n", GRA); printf("Please GRB. If don't exist GRB, please 0. \n"); scanf("%lf", &GRB); printf("GRB is %lf.\n", GRB); printf("Please GRC. If don't exist GRC, please 0. \n"); scanf("%lf", &GRC); printf("GRC is %lf.\n", GRC); printf("Please GRD. If don't exist GRD, please 0. \n"); scanf("%lf", &GRD); printf("GRD is %lf.\n", GRD); for(i=0; i<4; i++){ if(CKS == 0)IN_side_CLOCK = i+1.0; else if(CKS == i)IN_side_CLOCK = 2.0*i; else printf("Did not write about CKS.\n"); } PWM =1.0/CLOCK*IN_side_CLOCK*GRA; printf("PWM is %lf.\n", PWM); if(TOB == 1) Duty_Cycle_B = GRB/GRA*100.0; else if(TOB ==0) Duty_Cycle_B = (GRA-GRB)/GRA*100.0; else printf("Don't exist Duty_Cycle_B.\n"); if(TOC == 1) Duty_Cycle_C = GRC/GRA*100.0; else if(TOC ==0) Duty_Cycle_C = (GRA-GRC)/GRA*100.0; else printf("Don't exist Duty_Cycle_C.\n"); if(TOD == 1) Duty_Cycle_D = GRD/GRA*100.0; else if(TOD ==0) Duty_Cycle_D = (GRA-GRD)/GRA*100.0; else printf("Don't exist Duty_Cycle_D.\n");

}

試したこと

変数名を大文字にした:宣言した変数名に、gccではインストールされていない関数と同じ綴りのものがあったのではと思ったので。 

補足情報(FW/ツールのバージョンなど)

GCC Developer Lite (Ver.2.5.0.0 Copyright(C)BestTechnology CO.,LTD 1999-2012)
コンパイルのコマンドは、上記の環境で用意されている、ビルドというアイコンもしくは、コンパイルの項目の中のビルドを選択するかのどちらかです。
Linux系やコマンドプロンプトのようにコマンドを打ち込んでコンパイルを行っていません。

よろしくお願いします。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yumetodo

2018/10/29 17:08

collect2.exe: ld returned 1 exit status 以外にもうすこしなにか言ってくれるんじゃないかと思うんですが、本当にそれだけですか?
y_o

2018/10/29 17:36 編集

情報を更新しました。早く反応して頂きありがとうございます。返信遅くなって申し訳ありません。 赤色メッセージは最初の文だけでしたが、黄色で注意文が表示されていました。ご指摘ありがとうございます。
hichon

2018/10/29 21:15 編集

質問に貼られたエラーはコンパイル時の警告なのでリンクとは無関係です。もっと他にエラーが出ていませんか? あとコンパイル時のコマンドを貼って下さい。
y_o

2018/10/29 22:22

リンクとは無関係なのですね、他のエラーは使用しているGCC Developer Liteには表示されていませんでした。現在手元に自分のPCが無いためにすぐに試せないのですが。cygwinでコンパイル(コマンドを打ち込んで(30日13:00以降に))します。そこで、エラーメッセージが得られたら、追記します。
guest

回答1

0

ベストアンサー

PWM_DutyCycle.c:5:40: warning: variable 'Duty_Cycle_D'set but not use [-Wunused-but-set-variable]

Duty_Cycle_Dという変数に値を設定しているが、それを使っていない、と言うワーニングです

PWM_DutyCycle.c:66:1⚠️ control reches end of non-void function[-Wunused-type]

返り値のある関数が返り値を返していない、と言うワーニングです

双方とも警告レベルですんで、コンパイルは正常に終了します。
コンパイルが行われないのは別の原因のせいかと。

投稿2018/10/29 22:21

編集2018/10/29 22:22
y_waiwai

総合スコア87774

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

y_o

2018/10/29 22:31

回答ありがとうございます。 使用しているIDEがエラーの原因かもしれないという事でしょうか?(IDEがコンパイルとリンクを一緒にしているからかな、と考えるからです。)
y_waiwai

2018/10/29 22:36 編集

コンパイラのオプションで、ワーニングをエラー扱いにするオプションがあるんで、それを設定してないか、ですね。 ワーニングを出ないようにするなら、 関数の最後にでも、 (void)Duty_Cycle_D; とかいとけば消すことができます そして、 return 0; と書いときましょう #ワーニング潰したからちゃんと動くようになるかどうかはべつのおはなし
y_o

2018/10/29 22:57

返信ありがとうございます。 #〜でおっしゃる通りでした。warningが消えても特に変化がありません。 あと、エラーメッセージの最後の一行(collect2.exeから始まる)にerrorと表示されていたのに、抜けていました。お気づきかも知れないですが... このerrorがあるか無いかで、僕の質問内容が変わってきますか?
y_waiwai

2018/10/29 23:12 編集

> collect2.exe:error: ld returned 1 exit status collect2.exeのせいで、リンカの実行が異常終了したってはなしですが、 collect2.exeってなんでしょう。
y_o

2018/10/30 00:03

特に、指定したつもりも無いので、よく分かりません… 環境を変えて、コンパイルしてみます。今自分のPCで作業出来ていないので、30日13:00以降に試してみます! 朝早くから、お付き合い頂きありがとうございます!
y_o

2018/11/02 03:11

y_waiwai様ありがとうございました。 PCを変えてコンパイルしたら成功しました。最初のPCの環境設定が間違っていたようです。 お付き合いいただきありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問