Mという名前の関数をMain()
という名前の関数をCで作成することはできますか?
同じ名前で異なるケースの2つの要素が別々のエンティティとして扱われるため、私の意見ではMain()
を作成できますが、確認する必要があります。Cでは、Main()という関数を作成できますか?
答えて
厳密には準拠していない環境では、その名前が予約されている可能性があります。しかし、リンカーは大文字と小文字を区別することになっていて、首都は予約されていません。
あなたは、細心のない環境がmain()をmain()として予約し、2つを区別しないかもしれないことを意味しますか? – Cersei
Visual Studioのように、少なくとも一部のモードでWinMainを予約します。コンパイラーがmain()と少し異なる特性を持つ代替エントリーを必要とする場合、Mainは識別子の明白な選択です。 –
int Main (void)
{
return 0;
}
int main (void)
{
return 0;
}
完全にリンクされています。大文字と小文字が区別されます。
ありがとう!私はまだ初心者です。 「それは結構です」とはどういう意味ですか?どちらの関数も同じファイル内にありますか?申し訳ありませんが、これはひどくばかげた質問です。 – Cersei
はい、両方とも同じファイル内の機能です。ソースをオブジェクトコードに変換するコンパイラがあります。リンカーは、すべて一緒に実行可能ファイルを持っています。複数のファイルがある場合は、ファイルを一緒にリンクしたり、システムの一部のライブラリ(IOなど)にもリンクします。環境に応じて、実行可能ファイルを作成しようとすると、両方のステップが自動的に実行されます。 – chris01
もう1つ言います:2番目のファイルを作成し、非標準のMainをそれに入れると、リンカは "Mainの多重定義"というエラーを表示します。リンカが自分の仕事をしているのを見るだけです。あなたの質問の一部ではありません。 – chris01
もちろん、どうしてですか?プリプロセッサおよびコンパイラは、"Main"
および"main"
がと実質的に同じであることを気にしませんです。 Cは大文字と小文字を区別するため、"Main"
と"main"
は全く異なる2つの名前です。 (これは可読性を助けることはできませんが、技術的な理由はありませんすることはできません)例えば、
#include <stdio.h>
int Main (int argc, char **argv)
{
for (int i = 1; i < argc; i++)
printf (" %2d : %s\n", i, argv[i]);
return argc;
}
int main (int argc, char **argv) {
printf ("\n %d arguments.\n", Main (argc, argv) - 1);
return 0;
}
使用例あなたはすでに答えを持っている
$ ./bin/mainMain The quick brown fox jumps over a lazy dog.
1 : The
2 : quick
3 : brown
4 : fox
5 : jumps
6 : over
7 : a
8 : lazy
9 : dog.
9 arguments.
/出力が、ちょうどへ章、C11
から直接、正式な引用符のビットを追加5.1.2
実行環境:
freestandingとhostedの2つの実行環境が定義されています。いずれの場合も、実行 環境によって指定されたC関数が呼び出されると、 プログラムの起動が発生します。 [...]
その後、§5.1.2.2、ホステッド環境、P1、 "プログラムの起動"
プログラムの起動時に呼び出される関数は
main
という名前です。 [...]私たちが知っているように、前記
は、Cは、大文字と小文字を区別ある(§6.4.2.1/ 2を引用し、 "識別子"、一般)
識別子であります(アンダースコア_、 の小文字と大文字のラテン文字、およびその他の文字を含む)のシーケンスと、数字6.235.1で説明されているような1つまたは複数のエンティティ を指定します。 小文字と大文字は区別されます。 [...]
ようmain()
同じケースなしの識別子は、それがMain()
、MAIN()
、maiN()
または可能な他の任意の組み合わせであっても、main()
同じありません。それらはすべてCが関係する限り、異なる識別子です。
ので、Cで
への答えは、メイン(と呼ばれる関数)を作成することができますか?
はい、確かです。彼らは、コンパイラに異なる識別子であるので、あなたがだけMain()
を作成し、main()
を残せば
だけで、より多くのビットをクリアするために、すべてそれ自体でコンパイラは、あなたがMain()
を書き込むことによってmain()
を意味していることを知る方法がないだろう。
"..われわれがすでに知っているように" - ウィキペディアを参照する必要はありません。6.4.2.1で具体的に言及されているように、「小文字と大文字は区別されます。 :) – usr2564301
@RadLexusそれでは、wikiを標準の見積もりに変更してみましょう。:) –
これは、「なぜ」ではないのですか?D – usr2564301
大文字で1つ以上の文字を書いた場合のみ、メインと同じようにMAINと思われます。それ以外の場合は、メインが既にC言語の関数であるため、コンパイラはどのメインが必要かを判断できません。 注:私は初心者でもありますので、間違っている可能性もあります。
- 1. C++ main()関数の外部でクラスのインスタンスを作成する
- 2. pythonでmain関数を作成し、引数を渡します。
- 3. php sub関数がmain関数を返すことはできますか?
- 4. Objective-Cでは、main()関数で 'self'を使う方法は?
- 5. C++関数mainにはすでにボディがありますか?
- 6. main関数に入る前に、C++で何かを印刷できますか?
- 7. main関数でハンドラを呼び出すことはできますか?
- 8. 関数main()内の抽象クラスのポインタを作成できません
- 9. C++はmain関数の外で "cout"を使用していますか?
- 10. main関数からdll(C++)関数をC言語で使用する方法#
- 11. main()関数なしでコードをデバッグ(ステップスルー)できますか?
- 12. main()関数の引数をC言語で渡すにはどうしたらいいですか?
- 13. Cの複数の変数を関数からmainに渡すにはどうすればよいですか?
- 14. 作成した関数をint main()Cプログラミングに呼び出す方法は?
- 15. main()関数はリエントラントですか?
- 16. C#でMain関数を再度呼び出す方法はありますか?
- 17. GuileのScheme関数からC関数ポインタを作成するにはどうすればよいですか?
- 18. C++で "this"を使用して、メンバ関数でローカルオブジェクトを作成することはできますか?
- 19. main()関数とCの他のユーザー定義関数の違いは何ですか?
- 20. C#で変数のエイリアスを作成することはできますか?
- 21. S3ラムダ関数でファイルを作成することはできますか?
- 22. PHPループでJavaScript関数を作成することはできますか
- 23. main関数のクラスを挿入できませんか?
- 24. sqlite - コア関数に基づいてユーザー関数を作成できますか?
- 25. C++でmain関数の外にあるオブジェクトを使用するにはどうすればよいですか?
- 26. C言語でmain()以外のエントリポイントとして他の関数を作成する方法
- 27. main()以外のQtでウィンドウを作成していますか?
- 28. main関数の中で関数を定義できないのはなぜですか?
- 29. NULLチェックを含む汎用C++関数ポインタラッパーを作成できますか?
- 30. ある関数でオブジェクトを作成し、別の関数でオブジェクトを作成できますか?
お試しください。 –
私は 'maiN()'に行きます –
これはCの中期テストでした! – Cersei