C/C++のプログラミングにおいて、これだけは絶対にソースファイル(.c,.cpp)書かなくてはならない!というものはあるのでしょうか?
仕事でプログラミングをしている時に、同僚から「その変数の定義はソースファイルに書かないとダメ」と言われました。
「その変数の定義」とは、メモリの物理アドレスへの割り付けを伴うもので、以下のようなものです。
#pragma section=~, IO=~, attr=~, locate=0xFECA0000
__io int piyo; /* 0xFECA0000 */
__io int hoge; /* 0xFECA0004 */
特殊なコードで分かりにくく、申し訳ないのですが、簡単に言えば、「locate」で指定した物理アドレスから連続で変数を割り当てていくものです。
このコードをなぜヘッダではなく、「絶対に」ソースファイルに書かなくてはならないのかを尋ねましたが、明確な回答は得られませんでした。
私の認識としては、ソースファイルにAという処理を書くことと、Aの処理を書いたヘッダファイルをincludeすることとは、コンパイラにとっては全く同じことだと思ってます。
試しに、以下のソースを書いた「ヘッダ」ファイル”test.h”と「#include "test.h"」とだけ書いたソースファイル”test.c”を作成してビルドしたら、ちゃんと動く実行ファイルができました。
#include <stdio.h>
int main(void)
{
printf( "Hello, World!\n" );
return 0;
}
今回ご回答頂きたいのは、上記の物理アドレス割り付けのコードについてではなく、一般的な話として、これは「絶対に」ソースファイルに書かなきゃいけない!それは「絶対に」ヘッダファイルに書かなきゃいけない!とか言うものがあるのかどうか。あるとすれば、具体的にどのようなものなのかと言うことです。
何卒よろしくお願いいたします。
A 回答 (11件中11~11件)
- 最新から表示
- 回答順に表示
No.1
- 回答日時:
Cは使ってますがC++は全然分かりません。
その前提で。質問者さんの考えているとおり、これは必ずソースに、これは必ずヘッダに、というのは思い当たりません。
コンパイル時は実コンパイル前にプレコンパイルが行われて、ヘッダの中身がプレコンパイル時にインクルードしてる行にまるまるコピペされたものが実コンパイルされるイメージです。
この仕組みからもないと思います。
ただし、仕事で納品するプログラムは動けばいいという訳ではなく、読みやすさ、後々のメンテナンスのしやすさ等も品質として評価されます。(特別技術の高い人がCodingして、平均的能力の担当者に代わったら、仕様変更時に触れなくなってしまったとかも避けなければいけません。同じような10本のプログラムのうち1本だけ作りが違うとかも良くありません。)
通常、複数で開発する場合、Coding規約というものがありますがそれに違反してませんか?
もし、違反してればCのルール上問題なしでも同僚のいう「絶対ダメ!」が正解です。
(試しにやった中身全てをヘッダに入れるとかあまりに非常識な場合も仕事の上では「絶対ダメ!」になると思います。)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- C言語・C++・C# pythonで外部のファイルを読み込む際のエラー 2 2022/04/12 19:22
- C言語・C++・C# pythonのファイルの並びでの読み込みとリストについて 4 2022/04/13 03:52
- C言語・C++・C# C言語のファイル入力が分かりません 2 2022/05/22 06:35
- C言語・C++・C# このプログラミング誰か教えてくれませんか 1 2022/06/02 15:27
- その他(プログラミング・Web制作) 置換ソフトで指定したファイルの1行目に入力できるものを探しています 7 2022/11/24 10:34
- その他(プログラミング・Web制作) python OpenPyXLを使って出力結果をエクセルに書き込み 2 2022/06/04 19:46
- C言語・C++・C# C 言語の Gauss Jordan 法について 2 2022/12/28 11:16
- C言語・C++・C# const char** p;のとき、free(p)でC4090エラーとなるのはなぜですか 3 2023/03/31 16:28
- Visual Basic(VBA) VBAでの共有パスにつきまして 1 2023/03/04 17:24
- C言語・C++・C# C言語初心者 構造体 課題について 2 2023/03/10 19:48
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
WAVファイル同士の結合が可...
-
フレームワークについて
-
ファイルマッピングについて
-
VBAにてEXCEL以外のファイル(テ...
-
basic認証
-
大量のファイルの読み込みについて
-
SGファイルって何ですか?
-
Visual Stadio2008でjarファイ...
-
分割コンパイルの#defineについて
-
ASP .NETでファイル選択ダイア...
-
ファイルを記録してあるセクタ...
-
どんなプログラムを書いても指...
-
マイクラでPythonのプログラミ...
-
VC++でexeファイルが作成できま...
-
xismoについてです!開こうとす...
-
フォルダ名をだすには
-
Microsoft VBAで2GBを超えるフ...
-
windows.hがincludeされない
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
C言語初心者の質問失礼します。
-
csvファイルを開かずに文字を検...
-
ファイル名の先頭にアンダース...
-
CSVファイルへの保存の際、デー...
-
ファイルを記録してあるセクタ...
-
テキストファイルの最終行を削...
-
SGファイルって何ですか?
-
ドラッグアンドドロップでファ...
-
分割コンパイルの#defineについて
-
VBに、Cのincludeのようなもの...
-
fopenできる上限の変更
-
グローバル変数のよくない使い...
-
ファイルの結合
-
大きいサイズのテキストファイ...
-
iniファイルに追記がしたいです。
-
バッチで118項目のCSVを処理し...
-
ハッシュの計算時間について
-
C言語のfopenについて教えてく...
-
Javascript で INI の読み書き
-
Excelマクロでの再読込み方法
おすすめ情報