2021年3月17日水曜日

cc 関数の暗黙の宣言 includeしないで関数を使う

 


cc 関数の暗黙の宣言 includeしないで関数を使う


以下は上級者には当たり前かもしれないが、ちょっとびっくりので

また、ネット情報がヒットしなかったのでメモる。


同じファオルダに

main.c util.cをおき

それぞれオブジェクトファイルを作成してから、リンクさせ

実行ファイルを作成。 

それでも警告はでるものの、まともな実行ファイルが作成された。

通常はutil.hをincludeするべきだが


main.c

//filename: main.c

//http://www.ced.is.utsunomiya-u.ac.jp/lecture/2011/prog/p2/kadai1/3b.html

#include <stdio.h>

//#include "util.h"


int main(void){

    int u, v;

    u = 2; v = 3;

    printf("u=%d v=%d \n", u, v);

    swap(&u, &v);

    printf("u=%d v=%d \n", u, v);

    return 0;

}



util.c

//filename: util.c

//http://www.ced.is.utsunomiya-u.ac.jp/lecture/2011/prog/p2/kadai1/3b.html

void swap(int *a, int *b){

    int tmp;

    tmp = *a;

    *a = *b;

    *b = tmp;

}



util.h

//filename: util.h

//コメントアウトしてもエラーしない

//実行ファイルもまともに実行できる????

//extern void swap(int *a, int *b);



 gcc -c main.c を実行すると、以下の警告

関数「スワップ」の暗黙の宣言

~                                                                               

~                                                                               

~                                                                               

~                               

0 件のコメント:

コメントを投稿

About

参加ユーザー

連絡フォーム

名前

メール *

メッセージ *

ページ

Featured Posts