windows10でgcc 6.3.0をコマンドプロンプトで使用しています。
最近、定義済みマクロについて知りました。
すべてのファイルの保存とコンパイルの日時についてプログラムの実行時に表示するようにすれば、プログラムを更新した後オブジェクトファイルに変換するのを忘れてもプログラム実行時に気が付けると考えました。
しかし、下記の通りにプログラムを作り、main.cの保存時間、SRCFILE2.cの保存時間、SRCFILE2.cからオブジェクトファイルを作成する時間、main.cとSRCFILE2.oからmain.exeファイルの作成時間をずらして行いましたが、last compile(コンパイルを行った時間)がすべてmain.cをコンパイルした時間になってしまいました。
そのため、SRCFILE2.cのコンパイルを行った時間がわかりません。
SRCFILE2.cからオブジェクトファイルを作成した時間を知る方法などオブジェクトファイルの更新を忘れても、後から気が付ける方法があれば教えてください。
使用したコマンドは
gcc -c SRCFILE2.c -o SRCFILE2.o
gcc main.c SRCFILE2.c -o main.exe
main
の順です。
実行結果は
//---------------------------
source file : main.c
last update : Sun Dec 23 20:34:12 2018
last compile: Dec 23 2018 20:38:23
source file : SRCFILE2.c
last update : Sun Dec 23 20:35:06 2018
last compile: Dec 23 2018 20:38:23
マクロによるデータ出力
//------------------------------------
でした。
//--------------------------------------
//SRCFILE2.c
//----------------------------------------
#include <stdio.h>
#include"SRCFILE2.h"
void program_time_SRCFILE2(void){
printf("source file : %s \n", __FILE__);
printf("last update : %s \n", __TIMESTAMP__);
printf("last compile: %s %s\n",__DATE__, __TIME__);
printf("\n");
}
//--------------------------------------
//-----------------------------------
//SRCFILE2.h
//----------------------------------------
#ifndef __SRCFILE2_H
#define __SRCFILE2_H
void program_time_SRCFILE2(void);
#endif
//----------------------------------------
//----------------------------------------
//main.c
//---------------------------------------
#include <stdio.h>
#include"SRCFILE2.h"
//#define DEBUG
void program_time(void);
void debug_printf(char s[]);
int main(void) {
program_time();
program_time_SRCFILE2();
printf("マクロによるデータ出力\n\n");
debug_printf("aa");
}
void program_time(void){
printf("source file : %s \n", __FILE__);
printf("last update : %s \n", __TIMESTAMP__);
printf("last compile: %s %s\n",__DATE__, __TIME__);
printf("\n");
}
void debug_printf(char s[]){
#ifdef DEBUG
printf("%s",s);
#endif
}
//-------------------------------------
No.2ベストアンサー
- 回答日時:
うん。
私もmake使うべきだと思います。
>使用したコマンドは
>gcc -c SRCFILE2.c -o SRCFILE2.o
>gcc main.c SRCFILE2.c -o main.exe
>main
>の順です。
ならば、
>source file : main.c
>last update : Sun Dec 23 20:34:12 2018
>last compile: Dec 23 2018 20:38:23
>source file : SRCFILE2.c
>last update : Sun Dec 23 20:35:06 2018
>last compile: Dec 23 2018 20:38:23
は、正しいですよね?
>last compile(コンパイルを行った時間)がすべてmain.cをコンパイルした時間になってしまいました。
間違ってませんよ?
1回目にコンパイルしてオブジェクトファイルにしたものは、2回目に『SRCFILE2.cをコンパイルして上書き』したのですから。
2回目に指定しているのがSRCFILE2.“o”だったら、1回目と2回目の実行時間分ズレたのでしょうけど。
makeについて初めて知りました。
これは調べてみるとファイル分割を行う上では重要だと感じました。
早速使っていきたいです。
2回目に指定しているものをSRCFILE2.“o”にすべきでしたね。
SRCFILE2.“o”で行うと表示される二つのコンパイルした時間をずらすことができました。
こういったミスもmakeを使っていけば減らしていけるのでしょうね。
回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# プログラミングの授業の課題です 1 2023/01/17 22:15
- C言語・C++・C# プログラミングペーパーテスト 次の問題の実行結果を答えろ #include int x[ ] = { 1 2022/06/16 21:49
- C言語・C++・C# 宣言する関数の形が決まっている状態で、 str1とstr2の文字列をこの順に引っ付けてstrに保存し 2 2022/05/30 18:21
- C言語・C++・C# プログラミングの授業のペーパーテスト 実行結果を答えろ #include int x[ ] = {1 3 2022/06/16 20:08
- C言語・C++・C# バイナリファイルをコピーするのにかかる時間を測りたいのですが実行するとFatel error:gli 2 2022/11/03 01:10
- C言語・C++・C# c言語でユーザ関数を利用して入力された文字列を反転させるプログラムを作りたいです。 3 2023/01/29 19:47
- C言語・C++・C# プログラミングのペーパーテスト 実行結果がどのように表示されるか答えよ #include <stdi 1 2022/07/09 14:27
- C言語・C++・C# C言語プログラム変更 2 2022/12/21 15:03
- C言語・C++・C# カードシャッフルのブログラムを使ってc言語でブラックジャックをしたい 2 2022/04/12 15:13
- C言語・C++・C# Cのdoubleの浮動小数点表示について 3 2023/04/17 13:14
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
” OS ビルド ” の意味が分か...
-
[c++] <pthread.h>がinclude で...
-
「fatal error C1189」を回避す...
-
C言語でヘッダファイルにグロー...
-
マクロ コンパイルがグレーバック
-
ProCでコンパイルエラーが出ます
-
コンパイルエラー:ユーザ定義...
-
ILSpyで、デコンパイルできない。
-
関数形式マクロ
-
C++コンパイル時に『 C1083: in...
-
1 つ以上の複数回定義されてい...
-
VB6で開発中…標準モジュール間...
-
「猫でもわかるプログラミング...
-
RPGでプログラムからソースファ...
-
外部シンボル "_main"は未解決です
-
戻り値について
-
エクセルVBAではRound...
-
COBOLプログラムからC関数を呼...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBAを何回も作り直して、容量が...
-
<math.h>があるのにsqrtが・...
-
” OS ビルド ” の意味が分か...
-
Makefile作成時の拡張子.oとは?
-
「fatal error C1189」を回避す...
-
1 つ以上の複数回定義されてい...
-
ILSpyで、デコンパイルできない。
-
C言語でヘッダファイルにグロー...
-
エクセルVBAではRound...
-
セミコロンについて
-
マクロ コンパイルがグレーバック
-
C++コンパイル時に『 C1083: in...
-
外部シンボル "_main"は未解決です
-
PRO*C コンパイルエラー
-
コンパイルエラー:ユーザ定義...
-
クリティカルエラー Expressio...
-
ビルドとリビルドの違いを教え...
-
RPGでプログラムからソースファ...
-
戻り値について
-
C++のhppファイルをCでinclude
おすすめ情報