2

課題の内容: 2 つのソース ファイルから構成されるプログラムを作成します。最初の (Main.c) には main() 関数が含まれており、変数 ia の値を指定します。2 番目のソース ファイル (Print.c) は、i を 2 倍して出力します。Print.c には、main() から呼び出すことができる関数 print() が含まれています。

この課題を実行するために、次の 3 つのファイルを作成しました: main.cpp

#include <stdio.h>
#include "print.h"
using namespace std;

// Ex 1-5-3

// Global variable
int i = 2;


int main() {
    print(i);

    return 0;
}

印刷.cpp:

#include <stdio.h>
#include "print.h"
using namespace std;

// Ex 1-5-3

// Fetch global variable from main.cpp
extern int i;

void print(int i) {
    printf("%d", 2*i);
}

print.h:

#ifndef GLOBAL_H // head guards
#define GLOBAL_H

void print(int i);

#endif

print.cpp をコンパイルし、main.cpp をコンパイルして実行しようとすると、次のように表示されます: [Linker error] undefined reference to 'print(int)'

print.cpp で void print (int i) の私の定義を受け入れず、ヘッダー print.h を介して参照しないのはなぜですか? ありがとう!

4

1 に答える 1

2

使用しているコンパイラはわかりませんが、Linux/gccで動作するようになりました。

$ gcc main.cpp print.cpp -o test
$ ./test 
$ 4 
$
于 2012-10-12T03:11:31.547 に答える