M이라는 대문자를 사용하여 Main()
이라는 함수를 C에서 만들 수 있습니까?
동일한 이름이지만 다른 케이스의 두 요소가 별도의 엔터티로 취급되므로 내 의견으로는 Main()
을 만들 수 있지만 확인 만하면됩니다.C에서 Main()이라는 함수를 만들 수 있습니까?
답변
엄격하게 준수하지 않는 일부 환경에서는 그 이름을 예약 할 수 있습니다. 그러나 링커는 대소 문자를 구별하고 Capital을 가진 Main은 예약되어 있지 않습니다.
비 (非) 세심한 환경에서 Main()을 main()으로 예약하고 둘을 구분하지 않을 수도 있다는 뜻입니까? – Cersei
Visual Studio와 마찬가지로 적어도 일부 모드에서는 WinMain을 예약합니다. 컴파일러가 main()과 약간 다른 특성을 가진 대체 엔트리를 필요로한다면, Main은 명백한 식별자의 선택이다. –
int Main (void)
{
return 0;
}
int main (void)
{
return 0;
}
완벽하게 링크를 컴파일합니다. 대소 문자를 구분합니다.
고마워! 나는 아직 초보자이다. '링크가 잘되어있어'라는게 무슨 뜻이야? 두 함수 모두 같은 파일 내에 있습니다. 이것이 대단히 어리석은 질문이라면 미안합니다. – Cersei
예, 두 파일 모두 동일한 파일에 있습니다. 소스를 오브젝트 코드로 변환하는 컴파일러가 있습니다. 링커는 실행 파일을 만들기 위해 모두 함께 사용합니다. 둘 이상의 파일이있는 경우 파일을 함께 연결하거나 시스템의 일부 라이브러리 (예 : IO 등)에 연결합니다. 환경에 따라 실행 파일을 만들려고하면 두 단계가 모두 자동으로 수행됩니다. – chris01
한 번 더 말하기 : 두 번째 파일을 만들고 비표준 Main을 입력하면 링커에서 "Main of multiple definition"오류 메시지를 표시합니다. 링커가 자신의 일을하는 것을 보자. 귀하의 질문에 포함되지 않습니다. – chris01
물론 이죠? 전처리 기와 컴파일러는 "Main"
과 "main"
이 이 실질적으로 비슷하다고 생각하지 않습니다.. C는 대소 문자를 구별하므로, "Main"
과 "main"
은 전혀 다른 이름입니다. (이것은 가독성을 도움이되지 수 있지만, 기술적 이유가 없다 할 수 있습니다되지 않음) 예,
#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의 두 가지 실행 환경이 정의됩니다. 두 경우 모두 환경에서 지정된 C 함수를 호출하면 프로그램 시작이 발생합니다. [...]
후, §5.1.2.2, 호스팅 환경 P1, "프로그램 시작"
프로그램 시작시 호출되는 함수
main
라는. [...]
우리가 알고있는 바와 같이, C가, 식별자이다
(§6.4.2.1/2 "식별자"일반 인용) 대소 문자를 구분, 즉 상기 비 연속 문자 시퀀스 (밑줄 _, 소문자 및 대문자 라틴 문자 및 기타 문자 포함) 및 숫자, 6.2.1에서 설명한대로 하나 이상의 엔터티를 지정하는 숫자. 소문자와 대문자가 구별됩니다.는 [...]
정도로 main()
같은 경우없이 식별자는 Main()
, MAIN()
, maiN()
또는 임의의 다른 조합이 가능할, 하지 main()
같은이다. 그것들은 모두 C가 관련된 한 다른 식별자입니다.
그래서,
C에서에 대한 대답은 홈페이지라는 함수는() 생성 할 수 있습니까?
이 맞습니다. 그들은 컴파일러에 서로 다른 식별자이기 때문에 당신이 만Main()
을 만들고 main()
을 떠날 경우
그냥, 더 많은 비트를 취소, 모두 그 자체로 컴파일러는, 당신이 Main()
를 작성하여 main()
을 의미하는 것을 알 수있는 방법이 없습니다 .
". 우리가 이미 알고있는 것처럼."- 위키피디아를 언급 할 필요가 없다. 6.4.2.1에서 특별히 언급했듯이 : "소문자와 대문자는 구별된다." :) – usr2564301
@RadLexus 그런 다음 위키를 표준 인용문으로 변경하겠습니다. :) –
"왜 안되나요?" – usr2564301
대문자로 하나 이상의 문자를 쓰는 경우에만 메인 또는 MAIN과 유사하게 컴파일러는 main이 C의 함수이기 때문에 원하는 메인을 말할 수 없습니다. 참고 : 나는 초심자이기 때문에 잘못 될 수 있습니다.
- 1. main이라는 단어를 식별자로 사용
- 2. Objective C에서 CLHeading 개체를 만들 수 있습니까?
- 3. 어떻게 C에서 비트 맵을 만들 수 있습니까?
- 4. C에서 _alloca와 유사한 함수를 작성할 수 있습니까?
- 5. 어떻게 함수를 동적으로 만들 수 있습니까?
- 6. 클래스와 이름이 같은 함수를 만들 수 있습니까?
- 7. 이 코드에 여러 함수를 만들 수 있습니까?
- 8. 배열 원형 함수를 어떻게 만들 수 있습니까?
- 9. SQL Server에서 전역 함수를 만들 수 있습니까?
- 10. 이벤트 핸들러에서 javascript 함수를 만들 수 있습니까?
- 11. 제네릭 함수를 매개 변수로 사용하는 함수를 만들 수 있습니까?
- 12. 파이썬에서 C 매크로와 비슷한 명명 된 함수를 만들 수 있습니까?
- 13. C에서 어떻게 1200/500 = 3을 만들 수 있습니까?
- 14. Objective-C에서 어떻게 다차원 룩업 테이블을 만들 수 있습니까?
- 15. #define을 사용하여 C에서 그룹이나 그와 비슷한 것을 만들 수 있습니까?
- 16. 어떻게 C에서 동적으로 할당 된 배열을 만들 수 있습니까
- 17. objective-c에서 json 문자열을 어떻게 만들 수 있습니까?
- 18. 어떻게 Objective C에서 동적 메서드를 만들 수 있습니까?
- 19. C에서 사용자 정의 너비 정수를 만들 수 있습니까?
- 20. C에서 주소를 계산할 수없는 파일 범위 개체를 만들 수 있습니까?
- 21. C에서 토큰을 계산할 수 있습니까?
- 22. 암시 적 함수를 C에서 함수 포인터로 전달할 수 있습니까?
- 23. 어떻게 C++ 클래스 스타일을 C에서 함수를 재현 할 수 있습니까?
- 24. C에서 CURSES라는 함수를 C로 선언 할 수 있습니까?
- 25. C에서 함수를 작성하려면 어떻게해야합니까?
- 26. C에서 대기열 동기화를 만들 수 없습니다. #
- 27. C에서 외부 함수를 호출
- 28. C에서 콜백 함수를 구현하려면 어떻게해야합니까?
- 29. C에서 포인터를 사용하여 파일을 만들 수 없습니까?
- 30. C에서 png에 대한 구조를 만들 수 없습니다.
시도해 보지 않으시겠습니까? –
나는'maiN()'에 갈 것이다. –
글쎄, 이것은 C의 중기 시험이었다. – Cersei