2013-10-22 6 views
10
で終わる理由

私はいくつかの独自のソースコードを見ています。Cファイルが/ * [] */

コードはCおよびC++で書かれており、ビルドシステム用のmakeを使用しています。

各ファイルは、ソースファイルの場合は[]/*[]*/、メイクファイルの場合は#[]#となります。これの理由は何でしょうか?

コードは、拡張機能を使用してGCCを使用してARM用にコンパイルされます。

+0

それはおそらく 'vi'でしょう。 – Rohan

+3

私はそれをコーディングスタイルと呼ぶことはしませんし、標準ではないと思います。 '#'で始まる行はプリプロセッサ指令であることが多く、 '[##'は標準ではありません。 '#[]#'は本当に各ファイルの最後の行ですか? –

+1

私の推測では、makefileシステムはこれらの行をどこかで使用しています。コードの古いCコードが十分にある場合は、//コメントを必ずカウントすることはできないので、#はコード以外の1行を追加する方法になり、プリコンパイラはそれをフィルタリングします。おそらく、それは依存関係ツリーなどを構築するためのものでしょうか?私の感情は、メイクファイルを見ているだろう。 –

答えて

6

これは、ある種の自動拡張用のプレースホルダです。

通常、macrodef(またはソースコード制御フィルタの1つ)のようなものは、関連するテキストを含むようにそのような項目を展開します。通常、コメント保護された括弧のみが展開されるため、コメントはそのまま残り、コンパイル時に実際の展開された項目からソースコードを保護します。

しかし、現在検討しているのはおそらく、すべての内部拡張が削除された外側の角括弧です。これは、あるソースコード管理システムから別のソースコード管理システムへのコード移行中に行われた可能性があります。このようなアイディアは非常に推測的ですが、拡張アイテムを削除するのではなく、拡張アイテムを移行する努力をしているようには見えません。

0

は、私が働いていた一つのプロジェクトでは、すべてのCソースファイルは一番最後にコメントを含んでいた:

/* End of file */ 

その理由をgccの警告

Warning : No new line at end of file 

だから我々はこれを持っていました。コメントの後に人が書かないようにコメント(新しい行が続きます):

+2

それは意味をなさない!編集者が許可している限り、そのコメントの最後には新しい行を削除することができます。 – rodrigo

+0

それはいいアイデアだと私はそれについても言及すると思った。しかし、makeファイルが同じスタイルのコメントを持つ理由を説明することはできません。 makeファイルはコンパイルされないので、 'gcc'がコンパイラの警告を出さないようにします。 –

+0

@rodrigo確かに、彼らはコメントを見ていて、「ファイルの終わりの後に」書いてはいけません。それは確かに働いた。 – Archie

関連する問題