質問

私が見たすべての例で定数が常にkで始まるのはなぜですか?そして、ヘッダーまたは.mファイルの#define定数を定義する必要がありますか?

Objective Cを初めて使用しますが、Cを知りません。Cの知識を前提とせずにこれらの種類のことを説明するチュートリアルがどこかにありますか?

役に立ちましたか?

解決

" k"で始まる定数Mac OS X以前の時代の遺産です。実際、Mac OSの大部分がPascalで記述され、主な開発言語がPascalだった時代に、プラクティスは way から生まれたのではないかと思います。 Cでは、 #define 'd定数は通常、接頭辞「k」を付けるのではなく、すべて大文字で記述されます。

#define 定数の場所: #define を使用する場所。コードを #import する人が定数を使用することを期待する場合は、それらをヘッダーファイルに入れます。定数が内部でのみ使用される場合は、 .m ファイルに入れます。

他のヒント

uid / 20001284-1001783 "rel =" noreferrer ">名前付け定数には「k」プレフィックスは含まれていませんが、多くの組織ではこの規則を採用し、それを使用しています。 p>

" k"の問題この質問で回答されます。

>

また、特定の .m 以外のファイルでこれらの定数を使用する場合は、ヘッダーに定数を配置する必要があります。これらの定数は .m <をインポートできないためです。 / code>ファイル。

Cocoa Dev Centralの Cocoaプログラマ向けCチュートリアルに興味があるかもしれません。主要な概念の多くを説明しています。

&lt; kon&quot;の

k。真剣に。それは単なる慣習です。

好きな場所に#defineを置くことができます。ヘッダー、上部の.m、使用する場所のすぐ横の.mそれを使用するコードの前に置いてください。

「objective-cの概要」 Xcodeツールスイートで提供されるドキュメントは、実際には非常に優れています。数回読みます(2〜5年に1回読み直します)。

ただし、それも、私が知っているCブックも、これらの特定の質問には答えません。答えは、経験を通じて明らかになります。

k プレフィックスは、多くの開発者がハンガリー語の使用を好んだ時期から来ています。コード内の表記。ハンガリー語表記では、すべての変数には、それがどの型であるかを示す接頭辞があります。 pSize は、&quot; size&quot;という名前のポインターになります。一方、 iSize は&quot; size&quot;という名前の整数になります。名前を見るだけで、変数のタイプがわかります。これは、変数の型をいつでも表示できる最新のIDEがない場合に非常に役立ちます。そうでない場合は、宣言を検索して常にそれを知る必要があります。時代の流れに従って、Appleはすべての定数に共通の接頭辞を付けたいと考えていました。

さて、なぜ「定数」の c のように、 c ではどうですか? c はすでに使用されているため、ハンガリー語の表記では、 c は&quot; counter&quot;を表します。 ( cApple は「リンゴの数」を意味します)。 class にも同様の問題があり、多くの言語でキーワードになっていますが、クラスを指す変数にどのように名前を付けますか?この変数に klass という名前のコードがたくさんあるので、&lt; konstant&quot;のように k が選択されました。 k です。多くの言語では、この単語は実際にはakで始まります。こちらをご覧ください。

>

2番目の質問について: #define は型なしなので、回避できる場合は、 #define を定数に使用しないでください。

const int x = 10;           // Type is int
const short y = 20;         // Type is short
const uint64_t z = 30;      // Type is for sure UInt64
const double d = 5000;      // Type is for sure double
const char * str = "Hello"; // Type is for sure char *

#define FOO 90

FOOとはどのタイプですか?それはある種の数字です。しかし、どのような数字ですか?これまでのところ、すべてのタイプまたはまったくタイプがありません。タイプは、コードで FOO を使用する方法と場所によって異なります。

また、数値の固定セットがある場合は、 enum を使用します。これにより、コンパイラは有効な値を使用しており、列挙値が常に一定であることを確認できます。

定義を使用する必要がある場合、どこで定義するかは重要ではありません。ヘッダーファイルは、複数のコードファイル間で共有するファイルです。したがって、複数の場所で同じ定義が必要な場合は、ヘッダーファイルに書き込み、その定義が必要な場所にヘッダーファイルを含めます。コードファイルに書き込んだものは、そのコードファイル内でのみ表示されます。ただし、非静的関数と、デフォルトで両方ともグローバルに表示されるObj-Cクラスを除きます。ただし、関数がヘッダーファイルで宣言され、そのヘッダーファイルがその関数を使用するコードファイルに含まれていない限り、コンパイラーはこの関数がどのように見えるかを知りません(どのパラメーターが期待されるか、どの結果値が返されるか)ので、これをチェックすることはできず、正しく呼び出すことを信頼する必要があります(通常、これにより警告が作成されます)。 Obj-Cクラスは、少なくともこの名前がクラスの名前であることを現在のコードファイルに伝えない限り、まったく使用できませんが、実際にそのクラスで何かを実行したい場合(単に渡すだけでなく)、コンパイラはクラスのインターフェイスを知る必要があります。そのため、インターフェイスはヘッダーファイルに入ります(クラスが現在のコードファイル内でのみ使用される場合、ファイルへのインターフェイスと実装の書き込みも有効で動作します)。

これは以前のハンガリー記法の普及によるものだと思うので、cは文字を表すためkが選ばれました。 ( http://en.wikipedia.org/wiki/Hungarian_notation

-アラン

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top