![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?5a7ff87)
c言語のヘッダーファイルを自作したのですが、コンパイルすると、main.c の5行目に、以下のエラーがあると出ます。
"cannot use local functions"
プログラムとヘッダーファイルを下に書くので、どこが間違っているか、教えてください。
/*ここから main.c */
#include <stdio.h>
#include "facter.h"
int main(int argc, const char * argv[])
{
int a,b,c,d = 0,e;
printf("数値を入力 : ");
scanf("%d",&a);
c = a;
b = twobit(a);
printf("\n%dを2bitに直すと[%d]です。\n",c,b);
return 0;
}
/* ここから facter.h */
#include <stdio.h>
int twobit(int a){
int n = 0,l,count = 0,o;
o = a;
do{
o /= 2;
}while( o != 1 || o != 0);
if(o = 1){
while(a > 0){
l = a % 2;
if(l == 1){
n = n * 10 + 1;
}else{
n = n * 10;
}
a /= 2;
}
}else{
do{
a /= 2;
count++;
}while(a != 0);
n = 1;
for(;count > 1;count--){
n *= 10;
}
return (n);
}
![「C言語で自作ヘッダーを作ったのですが..」の質問画像](http://oshiete.xgoo.jp/_/bucket/oshietegoo/images/media/e/542299645_56c340e39f880/M.png)
No.4ベストアンサー
- 回答日時:
> {}の対応はしっかりしてます。
factor.h の方の対応が取れていません。
#includeは「指定したファイルをその場所にコピペする」ようなものです。
括弧の対応等の判定は、ファイル毎ではなく、全部「コピペ」した後の状態で行います。
そのため、真因のあるファイル(factor.h)とは違うファイル(main.c)でエラーが報告されることがよくあります。
この場合、いくらmain.cを直しても、エラーは治りません。
> C言語入門 ~PC教室の先生が教えるプログラミング講座~ というサイトの、 ヘッダファイルを自作する というところを参考に作りました
他の部分は見てませんが、その「ヘッダファイルを自作する」のところは説明が全然足りません。
より詳しくは「分割コンパイル」で検索してください。
No.5
- 回答日時:
とりあえず
> ヘッダの中に関数を使わないのであれば、どのようにして、関数の呼び出しを行うのですか?
---main.c---
#include <stdio.h>
#include "facter.h"
int main(int argc, const char * argv[]){
省略
}
---facter.h---
int twobit(int);
---facter.c---
#include "facter.h"
int twobit(int a){
省略
}
No.3
- 回答日時:
>main.c の5行目に、以下のエラーがあると出ます。
>"cannot use local functions"
main.cのmain()がtwobit()内にあるローカル関数になってて、使われていませんよ。
ってエラーです。
それ以外にもエラーがあるはずですが。
# あと、おそらく警告も。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# C言語のエラーについて 2 2022/07/11 13:56
- C言語・C++・C# プログラミング c言語 4 2023/03/07 01:05
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語の問題の説明、各所ごとに 5 2023/07/26 11:03
- C言語・C++・C# c言語の問題です 3 2023/01/10 16:15
- C言語・C++・C# C言語階乗の総和を求める 2 2023/03/04 23:31
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# C言語 3 2022/11/09 13:27
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# c言語配列の結合についてです。 なぜうまくいかないのでしょうか。 #include <stdio.h 4 2022/05/30 22:42
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
TCP/IP: 非ソケットに対するソ...
-
Expression: nptr != NULL
-
'printf':識別子が見つかりませ...
-
C言語のエラーについて
-
加減剰余のオーバーフローについて
-
C言語初心者です。計算がうまく...
-
第5調波や第3高調波って何です...
-
クレーンでのCFブレーキとな...
-
互いに素と負の数
-
一次遅れ系の制御における時定...
-
動揺装置は自作できますか?
-
モータの巻線係数って何でしょ...
-
反転増幅回路の周波数特性の理論値
-
SPI 非言語の問題です
-
SPI 非言語 教えてください
-
双安定マルチバイブレータについて
-
整合フィルタ(matched filter)...
-
数学の参考書に 「y=8x」は「y...
-
数学Aの問題です。 答えは、左...
-
交流、パルス波、バースト波
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
c言語プログラミングで初項を1....
-
Expression: nptr != NULL
-
C言語のエラーについて
-
プログラミングが分かりません。
-
C言語 コンパイルエラー(文字...
-
C言語初心者です。計算がうまく...
-
C言語で自作ヘッダーを作ったの...
-
C言語のソースコードについて教...
-
加減剰余のオーバーフローについて
-
分割コンパイルの手順と方法に...
-
プログラムがエラーが出る原因
-
'printf':識別子が見つかりませ...
-
C言語:2つの複素数(分数)の四...
-
TCP/IP: 非ソケットに対するソ...
-
getch / putch用のヘッダ
-
doubleからintへのキャスト
-
コンソールAPIのSetConsoleScre...
-
3×3のラテン方陣をつくるプログ...
-
リターンキー又は、スペースキ...
-
コンパイルエラー (超初心者...
おすすめ情報
「これじゃ2bitになんねーよ」というのは無しでお願いします。
試作途中でエラーに詰まってしまったのと、今回の目的は自作ヘッダーファイルを作ることですので。
あと、一部遠回りしてる部分がありそうですが、そこについてのツッコミも無しでお願いします。
C言語入門 ~PC教室の先生が教えるプログラミング講座~ というサイトの、 ヘッダファイルを自作する というところを参考に作りました。
{}の対応はしっかりしてます。
それと、ヘッダの中に関数を使わないのであれば、どのようにして、関数の呼び出しを行うのですか?
初心者で、わからない事だらけなのですが、よろしくお願いします。