
A 回答 (6件)
- 最新から表示
- 回答順に表示
No.6
- 回答日時:
変数の実体をtmp1.cで宣言するとして、2つ方法があります。
一つは、tmp2.cファイルの先頭でtmp1.cをincludeする方法
もう一つは、tmp2.cファイル内でexternで変数をグローバルとして宣言し、リンク時にabc/tmp1.oとefg/tmp2.oをリンクする方法
一般的には後者の方法を取ります。後者の方法でよくやるやり方は、tmp1.hというヘッダファイルの中にexternでグローバル変数を宣言しておき、このグローバル変数を利用するCファイルはtmp1.hをincludeします。
前者のやり方は、以前学生が書いていた衝撃的なコードがあって、
main.cというファイルに、
#include "file1.c"
#include "file2.c"
....
main() {
main_process();
printf("%s\n", result); // resultはchar*型のグローバル変数で、どこかのファイルで宣言されている
}
みたいな内容が書いてあり、
$ gcc -o myprog main.c
で一発コンパイルするという手法です。
なるほどなーと思いましたが、グローバル変数が絡んだ瞬間に意味が分からなくなります。
No.3
- 回答日時:
フォルダ云々はmakeファイルでのソースファイル指定がどうされるかだけのことで、グローバル変数の宣言とは無関係です。
test2.c内でグローバル変数として定義した変数をextern宣言したヘッダーファイルを作成し、そのヘッダーファイルをtest1.cとtest2.cの両方でインクルードします。
それだけです。
Cの教科書に書かれてますし、ちょっと検索しますと以下のような解説ページがみつかるはずです。
https://www.sejuku.net/blog/24107
参考まで。
No.1
- 回答日時:
別に、どのフォルダにあっても、
関数の実体にフォルダは反映されないので、
tmp1.c で書いている関数に沿ったものの宣言を、
ヘッダなり、自身のCファイル(tmp2.c)に書けばいいだけです。
きちんと別フォルダにあるオブジェクトをリンクできれば。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
OpenFileDialogを使った後にも...
-
<a href="file:///フォルダ名/...
-
Subversionにて、リポジトリの...
-
ExcelのVBProjectがExcelを開く...
-
拡張子をつくる
-
ExcelVBAでリンク先の対象のフ...
-
スマホでHTMLファイルを開いて...
-
RPGでのダメージの算出方法につ...
-
system関数のエラー検出
-
VBAチェックボックスで有効無効...
-
rsync実行でmkdirエラー
-
linux duコマンドで困っています。
-
コマンドプロンプトでサービス...
-
シリアル通信でのread関数の戻り値
-
Gitで空白のみの変更を削除した...
-
コピーの際、ファイルの作成日...
-
データリーダーからのデータ読...
-
ユーザーフォーム内のテキスト...
-
Visual C++からftpを使う
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
PCに保存していた写真を見られ...
-
OpenFileDialogを使った後にも...
-
拡張子をつくる
-
<a href="file:///フォルダ名/...
-
ExcelVBAでリンク先の対象のフ...
-
同名フォルダを作成し、そのフ...
-
ExcelのVBProjectがExcelを開く...
-
Excelで外部のファイルの場所を...
-
スマホでHTMLファイルを開いて...
-
MkDir パス名が無効です
-
Git bashが開かなくなってしま...
-
VBでUNIX上のテキスト・ファイ...
-
OneDriveのドキュメントにある...
-
50Mってどのくらいですか・・...
-
Outlookで添付ファイルの貼り付...
-
「~$ファイル名.doc」というフ...
-
秀丸のタグジャンプがうまくで...
-
ファイルの作成日時について
-
サーバーに転送すると文字が大...
-
.htaccessの設置について
おすすめ情報