分割コンパイルの問題なのですが全くわかりません。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら

すだち

Re: 分割コンパイルの問題なのですが全くわかりません。

#2

投稿記事 by すだち » 1年前

分割コンパイルの授業が受けれておらず詰まってしまっています。
提出の期限も近く、手も足も出ないので、ソースコードを教えてほしいです。
お手数ですが、簡単な説明もいただけるとありがたいです。

アバター
usao
記事: 1887
登録日時: 11年前

Re: 分割コンパイルの問題なのですが全くわかりません。

#3

投稿記事 by usao » 1年前

「分割コンパイル」が問題なのであれば
C側の実装の話ではなくて makefile の書き方等の側が問題なのだと思うので
makefile についてググるとかした方が早いのでは?
(私もmakeとか使ったの大昔すぎていちいちググらないと無理だな…まったく覚えてない)

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: 分割コンパイルの問題なのですが全くわかりません。

#4

投稿記事 by あたっしゅ » 1年前

東上☆海美☆「
『分割コンパイル』が出来ないのですね。

まず、ファイルを分割せずに、ファイル一個で作ってみて up してみてください。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: 分割コンパイルの問題なのですが全くわかりません。

#5

投稿記事 by あたっしゅ » 1年前

東上☆海美☆「
たしか、Borland C++ の頃は、
IDE プロジェクトから、makefile を作って、コマンドラインでビルドすることが出来たみみ。
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: 分割コンパイルの問題なのですが全くわかりません。

#6

投稿記事 by あたっしゅ » 1年前

東上☆海美☆「
大学 ?
選択した科目が理解できなかったら、その単位、落とせばいいだけの話でしょ。
選択した科目の単位が取れないと、全体の評価が下がるしくみの学校なの ?
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

アバター
usao
記事: 1887
登録日時: 11年前

Re: 分割コンパイルの問題なのですが全くわかりません。

#7

投稿記事 by usao » 1年前

オフトピック
> 提出の期限も近く

とのことだったが,大丈夫だったのかな?

この手の掲示板的な箇所は即応性が無いから時間が無いときは圧倒的に使いにくいハズ.
「授業」であればそれを受けている他者に訊くのが最速且つ最善手だと思う.

自分で調べてどうにかするなら
「makefile 書き方」とかでググれば丁寧な解説がいくつも見つかるハズ.
まずは最も手っ取り早いと見える書き方(「まず各ソースからオブジェクトファイルをつくってさぁ…次に…」というような書き方じゃなくてダイレクトに「これらのソースファイル群から実行形式作って」っていう1行な記述)を採用すれば最低限OKかと思うが.

Cのソースの側については,最初から複数のファイルに分けるのが難しいという話であれば,言われているようにまずは「分割せずに」動くコードを書くのがよいだろう.
で,その後で指定されている形に切り分ければいい(これはほぼ カット&ペースト 的な作業だ).

アバター
usao
記事: 1887
登録日時: 11年前

Re: 分割コンパイルの問題なのですが全くわかりません。

#8

投稿記事 by usao » 1年前

オフトピック
ここでのやりとりを放棄したのかもしれんが…

この手の場所で質問するときは,本当にわからないところ(:そこさえどうにかなれば進めることができそうな事柄)を具体的にダイレクトに正直に訊くのが良いと思うよ.
「こういう課題があって,とくかくわからん」みたいなぼんやりとした話を書くと,まず「何がわからんということなのか?」という話から無駄にやりとりすることになって肝心の本来の話が全く進まない.

あと,(ここに限らずこれ系の場所では)本人が努力した形跡が示されない場合にはまともに関わらない的なスタンスの人も多い(?)気がするから
問題文だけを提示して問うていくスタイルは上策とは言えないんじゃないかな.

naohiro
記事: 8
登録日時: 2年前

Re: 分割コンパイルの問題なのですが全くわかりません。

#9

投稿記事 by naohiro » 1年前

matrix33.h

コード:

#ifndef MATRIX33_H
#define MATRIX33_H

void input_matrix33(double mat[][3], char* filename);
void print_matrix33(double mat[][3]);
void sum_matrix33(double matA[][3], double matB[][3], double matS[][3]);
void mul_matrix33(double matA[][3], double matB[][3], double matM[][3]);

#endif
matrix33.c:

コード:

#include "matrix33.h"
#include <stdio.h>

void input_matrix33(double mat[][3], char* filename)
{
    FILE* fp;
    fp = fopen(filename, "r");
    if (fp == NULL) {
        printf("File open error\n");
        return;
    }
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            fscanf(fp, "%lf", &mat[i][j]);
        }
    }
    fclose(fp);
}

void print_matrix33(double mat[][3])
{
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            printf("%lf ", mat[i][j]);
        }
        printf("\n");
    }
}

void sum_matrix33(double matA[][3], double matB[][3], double matS[][3])
{
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            matS[i][j] = matA[i][j] + matB[i][j];
        }
    }
}

void mul_matrix33(double matA[][3], double matB[][3], double matM[][3])
{
    for (int i = 0; i < 3; i++) {
        for (int j = 0; j < 3; j++) {
            matM[i][j] = 0.0;
            for (int k = 0; k < 3; k++) {
                matM[i][j] += matA[i][k] * matB[k][j];
            }
        }
    }
}
main.c:

コード:

#include <stdio.h>
#include "matrix33.h"

int main(int argc, char* argv[])
{
    double matA[3][3];
    double matB[3][3];
    double matSum[3][3];
    double matMul[3][3];

    if (argc != 3) {
        printf("Usage: %s filename1 filename2\n", argv[0]);
        return 1;
    }

    input_matrix33(matA, argv[1]);
    printf("1st matrix\n");
    print_matrix33(matA);

    input_matrix33(matB, argv[2]);
    printf("2nd matrix\n");
    print_matrix33(matB);

    sum_matrix33(matA, matB, matSum);
    printf("sum of the matrices\n");
    print_matrix33(matSum);

    mul_matrix33(matA, matB, matMul);
    printf("product of the matrices\n");
    print_matrix33(matMul);

    return 0;
}
Makefile

コード:

CC=gcc
CFLAGS=-Wall -Werror

all: main

main: main.o matrix33.o
	$(CC) $(CFLAGS) -o $@ $^

main.o: main.c matrix33.h
	$(CC) $(CFLAGS) -c $<

matrix33.o: matrix33.c matrix33.h
	$(CC) $(CFLAGS) -c $<

clean:
	rm -f main main.o matrix33.o

ChatGPTでこんなコードが生成されました。

アバター
あたっしゅ
記事: 664
登録日時: 13年前
住所: 東京23区
連絡を取る:

Re: 分割コンパイルの問題なのですが全くわかりません。

#10

投稿記事 by あたっしゅ » 1年前

東上☆海美☆「なぜ、プログラミングの単位を取らないといけないのか」

chatGPT「プログラミングを学ぶことで、コンピューターシステムやアルゴリズム、データ構造などの基礎的な知識を習得し、実際にプログラムを作成するスキルを身に付けます。これらは、コンピューターサイエンスや情報技術分野でのキャリアや他のテクノロジー関連のキャリアに必要なスキルです。また、プログラミングは論理的な思考力や問題解決能力を向上させることができます。このため、プログラミングのカリキュラムを修めることは、将来的に役立つことが多いです。」

東上☆海美☆「情報科の半数の学生が、非プログラミングの職に就くのは、なぜか」


chatGPT「情報科の学生のうち、非プログラミングの職に就く理由は多層的ですが、以下が一部の理由となります。

好み: たくさんの人が、プログラミング以外の業界でのキャリアに興味があります。

スキルセット: 情報科の学生は、プログラミング以外のスキル、例えば分析力やプレゼンテーション能力などがあり、これらを活用したいと考えています。

市場ニーズ: 一部の業界では、プログラマー不足がありますが、他の業界ではプログラマーの豊富な供給があります。情報科の学生は、市場ニーズに応じてキャリア選択をするかもしれません。

個人的な興味: 学生は、プログラミング以外のトピックにも興味があり、これらに関連するキャリアに興味を持っています。

これらはあくまで一部の理由であり、個人的な選択や興味、キャリア目標などによって異なります。」
VTuber:
東上☆海美☆(とうじょう・うみみ)
http://atassyu.php.xdomain.jp/vtuber/index.html
レスがついていないものを優先して、レスするみみ。時々、見当外れなレスしみみ。

中の人:
手提鞄あたッしュ、[MrAtassyu] 手提鞄屋魚有店
http://ameblo.jp/mratassyu/
Pixiv: 666303
Windows, Mac, Linux, Haiku, Raspbery Pi, Jetson Nano, 電子ブロック 持ち。

返信

“C言語何でも質問掲示板” へ戻る