2011-09-09 5 views
1

私はthis「は、予約語のキーワード」である、しかし、私の理解の最高に、それはないと主張していますC.Xcodeは "this"はC言語の予約語です。

方法パラメータthisを試してみて、名前を変更するのXcodeのRefactor > Renameコマンドを使用していました。

これはXcodeのバグですか?または私は何かを逃していますか?

C Reserved Language Keyword?

答えて

3

C99では予約語ではありませんが、C++では98です。

4

それはバグではありません。

thisがC言語で予約されていない場合でも、そのような変数に名前を付けることは非常に悪い考えです。 CコードをC++と混合することができます。そのような場合、プログラムはコンパイルされません。あなたは本当にあなたが標準的な検索を行うと置き換え、代わりにリファクタリングのできる、という場合

はそうでもC.

で、これを使用しないでください。しかし、再び、悪い考え。

+1

IMOあなたの '.c'ファイル*がC++としてコンパイルされていない方が少し良いです。そうした場合、実際に働く(つまり同じ行動をとる)ことを保証するのは誰ですか? C++としてコンパイルした人はおそらくあなただと思っていますが、実際にその作業を入れてテストしますか?もしそうでなければ、C++から公開された '.h'ファイルを使用できることを確認してください(そして' this'をパラメータ名として使用しないでください)。 C++としてコンパイルをサポートしているかのように振る舞いません。そして、それをサポートすることを邪魔しないでください:デュアル言語コードを書くことはかなり無意味です。 –

+0

説明をありがとう。 typedefされた構造体で動作し、他の言語のインスタンスメソッドのように動作するメソッドがある場合、その最初の 'this'パラメータの名前を標準化したいと思います。代わりの名前に関する提案?私はXcodeが 'self'で同様の理由でボークしていると想定しています(objective-c)。 – Steve

+1

これはバグです。 CとC++は同じ言語ではなく、 'this''を'予約語 'キーワードと呼ぶのは単純にfalseです。 –

0

"this"はJavaのキーワードでもあります。私はXcode 4については分かりませんが、Java開発のために以前のバージョンを使用することもできます。いくつかのワイヤが交差している可能性があります...

+0

なぜ票が下がったのかわかりませんが、私は私の答えの理由を明らかにすると思っていました。ダウン投票者が同じ礼儀を持っているかどうか分かりませんか? –

+0

Xcodeは「リファクタリング」ツールで他の言語を考慮していると思います。質問を見て、回答を投稿する時間をとってくれてありがとう! – Steve

+0

ちょっと - 同情プラスありがとう。 ;-)それは間違いなく複数の言語の予約語です - 私の "貢献"はJavaが少なくともX *がサポートされていた言語でした。 –