μ¬λ°λ₯Έ (κ°μ₯ ν¨μ¨μ μΈ)μ μ μνλ λ°©λ²μ 무μμ
λκΉ main()
β Cμ C ++μ κΈ°λ₯ int main()
λλ void main()
β μ΄μ λ? λ§μ½ int main()
λ€μ return 1
λ return 0
?
μ΄ μ§λ¬Έμλ λ€μμ ν¬ν¨νμ¬ μλ§μ μ¬λ³Έμ΄ μμ΅λλ€.
- Cμ
main()
κΈ°λ₯μ μ ν¨ν μλͺ μ 무μμ λκΉ ? main()
ν¨μ μ λ°ν μ νvoid main()
μint main()
?μ μ°¨μ΄μ main()
C ++μ μλͺ- μ μ¬λ°λ₯Έ μ μΈμ
main()
무μμ λκΉ? β C ++μ κ²½μ°, μ λ§ μ’μ λλ΅μ΄ μμ΅λλ€. main()
C μ ν¨μ μ€νμΌmain()
Cμμ λ©μλμ λ¦¬ν΄ μ νint main()
void main()
Cμμ vs
κ΄λ ¨ :
- C ++ β
int main(int argc, char **argv)
- C ++ β
int main(int argc, char *argv[])
- μΈκ°
char *envp[]
μ μΈ λ²μ§Έ μΈμλ‘main()
ν΄λμ©? int main()
ν¨μκ° λͺ¨λ μ»΄νμΌλ¬μμ κ°μ λ°ν ν΄μΌ ν©λκΉ?main()
C λ° C ++ μ ν¨μ μ νμ΄ μ μνλλ‘ μ¬μ©μμκ² λ¨κ²¨μ§ μ΄μ λ 무μ μ λκΉ?- μ
int main(){}
μ»΄νμΌν©λκΉ? main()
C ++ 14 μ λ²μ μ μ ?
λ΅λ³
μ λ°ν κ° main
μ νλ‘κ·Έλ¨μ΄ μ’
λ£ λ λ°©λ² μ λνλ
λλ€. μ μ μ’
λ£λμ 0 λ°ν κ°μΌλ‘ νμλ©λλ€ main
. λΉμ μ μ’
λ£λ 0μ΄ μλ 리ν΄μ μν΄ νμλμ§λ§ 0μ΄ μλ μ½λλ₯Ό ν΄μνλ λ°©λ²μ λν νμ€μ μμ΅λλ€. λ€λ₯Έ μ¬λλ€μ΄ μ§μ νλ―μ΄ void main()
C ++ νμ€μ μν΄ κΈμ§λμ΄ μμΌλ―λ‘ μ¬μ©ν΄μλ μλ©λλ€. μ ν¨ν C ++ main
μλͺ
μ λ€μκ³Ό κ°μ΅λλ€.
int main()
κ³Ό
int main(int argc, char* argv[])
μ΄λ κ²μ΄
int main(int argc, char** argv)
λν C ++μμλ int main()
return-statementμμ΄ λ¨κ²¨ λ μ μμΌλ©°μ΄ μμ μμ κΈ°λ³Έκ°μ 0μ λ°νν©λλ€. μ΄λ C99 νλ‘κ·Έλ¨μμλ λ§μ°¬κ°μ§μ
λλ€. return 0;
μλ΅ν΄μΌνλμ§ μ¬λΆ λ λ
Όμμ μ¬μ§κ° μμ΅λλ€. μ ν¨ν C νλ‘κ·Έλ¨ κΈ°λ³Έ μλͺ
μ λ²μλ ν¨μ¬ ν½λλ€.
ν¨μ¨μ±μ main
κΈ°λ₯μ λ¬Έμ κ°λμ§ μμ΅λλ€ . C ++ νμ€μ λ°λΌ ν λ²λ§ μ
λ ₯νκ³ λ¨κ²¨ λ μ μμ΅λλ€ (νλ‘κ·Έλ¨ μμ λ° μ’
λ£ νμ). Cμ κ²½μ°, μ¬ μ
λ ₯ main()
μ΄ νμ©λμ§λ§ νΌν΄μΌν©λλ€.
λ΅λ³
νμ© λ λ΅λ³μ C ++μ λμμΌλ‘νλ κ²μΌλ‘ 보μ΄λ―λ‘ Cμ κ΄λ ¨λ λ΅λ³μ μΆκ° ν κ²μ΄λΌκ³ μκ°νλλ° λͺ κ°μ§λ©΄μμ λ€λ¦ λλ€.
ISO / IEC 9899 : 1989 (C90) :
main()
λ€μ μ€ νλλ‘ μ μΈλμ΄μΌν©λλ€.
int main(void)
int main(int argc, char **argv)
λλ λλ±ν©λλ€. μλ₯Ό λ€μ΄ int main(int argc, char *argv[])
λ λ²μ§Έ κ²κ³Ό κ°μ΅λλ€. λν int
λ°ν μ νμ κΈ°λ³Έκ°μ΄λ―λ‘ μλ΅ ν μ μμ΅λλ€.
ꡬνμ΄ νμ©νλ κ²½μ° main()
λ€λ₯Έ λ°©λ²μΌλ‘ μ μΈ ν μ μμ§λ§ μ΄λ‘ μΈν΄ νλ‘κ·Έλ¨ κ΅¬νμ΄ μ μλκ³ λ μ΄μ μ격νκ² μ€μνμ§ μμ΅λλ€.
μ΄ νμ€μ μ격νκ² μ€μνλ (μ¦, μ μ λ ꡬν λμμ μμ‘΄νμ§ μμ) λ°ν 0
λ° EXIT_SUCCESS
μ±κ³΅μ μΈ μ’
λ£ λ° EXIT_FAILURE
μ€ν¨ν μ’
λ£μ λν 3 κ°μ κ°μ μ μ ν©λλ€. λ€λ₯Έ κ°μ λΉνμ€μ΄λ©° ꡬνμ΄ μ μλμ΄ μμ΅λλ€. μ μλμ§ μμ λμμ νΌνλ €λ©΄ λμ main()
λͺ
μμ μΈ return
μ§μ μ΄ μμ΄μΌν©λλ€ .
λ§μ§λ§μΌλ‘, νμ€ κ΄μ main()
μμ νλ‘κ·Έλ¨ μ νΈμΆ ν λ μλ¬΄λ° λ¬Έμ κ° μμ΅λλ€ .
ISO / IEC 9899 : 1999 (C99) :
C99μ κ²½μ° λ€μμ μ μΈνκ³ λͺ¨λ κ²μ΄ μμ λμΌν©λλ€.
int
λ°ννλ μλ΅ λ μ μλ€.- μμ return λ¬Έμ μλ΅ ν μ μμ΅λλ€
main()
. λΉμ μ΄νκ³main()
λλ΄λ©΄ μμ μ return 0
μ λλ€.
λ΅λ³
νμ€ C β νΈμ€ν νκ²½
νΈμ€ν νκ²½ (μΌλ°μ μΈ νκ²½)μ κ²½μ° C11 νμ€ (ISO / IEC 9899 : 2011)μ λ€μκ³Ό κ°μ΄ λ§ν©λλ€.
5.1.2.2.1 νλ‘κ·Έλ¨ μμ
νλ‘κ·Έλ¨ μμμ νΈμΆ λ ν¨μμ μ΄λ¦μ
main
μ λλ€. ꡬνμμ΄ ν¨μμ λν νλ‘ν νμ μ μ μΈνμ§ μμ΅λλ€. λ°ν μ νint
κ³Ό λ§€κ° λ³μμμ΄ μ μν΄μΌν©λλ€ .int main(void) { /* ... */ }
λλ λ κ°μ λ§€κ° λ³μκ°μλ κ²½μ° (μ¬κΈ°μ as
argc
λ° μ°Έμ‘°)argv
, μ μΈ λ ν¨μμ λ‘컬 μ΄λ¦μ΄λ―λ‘ λͺ¨λ μ΄λ¦μ μ¬μ©ν μ μμ΅λλ€.int main(int argc, char *argv[]) { /* ... */ }
λλ λλ±ν κ²; 10) λλ λ€λ₯Έ ꡬν μ μ λ°©μμΌλ‘.
μ΄λ€μ΄ μ μΈλλ©΄, main ν¨μμ λν λ§€κ° λ³μλ λ€μ μ μ½ μ‘°κ±΄μ λ°λΌμΌν©λλ€.
- μ κ°μΉ
argc
μμκ° μλμ΄μΌνλ€.argv[argc]
λ ν¬μΈν°μ΄μ΄μΌνλ€.- μ κ°
argc
μ΄ 0λ³΄λ€ ν¬λ©΄ λ°°μ΄ λ©€λ²argv[0]
λ
argv[argc-1]
λ Όλ¦¬ν© νλ‘κ·Έλ¨μ μμνκΈ° μ μ νΈμ€νΈ νκ²½ ꡬν μ μ κ°μ μ£Όμ΄μ§ λ¬Έμμ΄μ λν ν¬μΈν°λ₯Ό ν¬ν¨νλ€. νΈμ€ν νκ²½μ λ€λ₯Έ κ³³μμ νλ‘κ·Έλ¨μ μμνκΈ° μ μ κ²°μ λ νλ‘κ·Έλ¨ μ 보λ₯Ό μ 곡νκΈ°μν κ²μ λλ€. νΈμ€νΈ νκ²½μμ λλ¬Έμμ μλ¬Έμλ‘ λ¬Έμμ΄μ μ 곡 ν μμλ κ²½μ° κ΅¬νμ λ¬Έμμ΄μ μλ¬Έμλ‘ μμ ν΄μΌν©λλ€.- μ κ°
argc
μ΄ 0λ³΄λ€ ν° κ²½μ° byκ° κ°λ¦¬ν€λ λ¬Έμμ΄argv[0]
μ νλ‘κ·Έλ¨ μ΄λ¦ μ λνλ λλ€.argv[0][0]
νλ‘κ·Έλ¨ μ΄λ¦μ νΈμ€νΈ νκ²½μμ μ¬μ©ν μμλ κ²½μ° λ λ¬Έμ μ¬μΌν©λλ€. μ κ°argc
μ΄ 1λ³΄λ€ ν¬λ©΄,argv[1]
ν΅ν΄ μ§μ λ λ¬Έμμ΄argv[argc-1]
μ νλ‘κ·Έλ¨ λ§€κ° λ³μ λ₯Ό λνλ λλ€.- μ΄λ μ΄κ° κ°λ¦¬ν€λ νλΌλ―Έν°
argc
λ°argv
λ¬Έμμ΄μargv
νλ‘κ·Έλ¨μ μν΄ μμ κ°λ₯ν΄μΌνλ©° νλ‘κ·Έλ¨ μμκ³Ό νλ‘κ·Έλ¨ μ’ λ£ μ¬μ΄μ λ§μ§λ§μΌλ‘ μ μ₯λ κ°μ μ μ§ν΄μΌν©λλ€.10) λ°λΌμ
int
λ‘ μ μ λ typedef μ΄λ¦μΌλ‘ λ체int
νκ±°λ μ νμargv
λ‘char **argv
λ± μΌλ‘ μΈ μ μμ΅λλ€
.
C99 λλ C11μ νλ‘κ·Έλ¨ μ’ λ£
μμ λ°ν λ κ° main()
μ ꡬν μ μ λ°©μμΌλ‘ βνκ²½βμΌλ‘ μ μ‘λ©λλ€.
5.1.2.2.3 νλ‘κ·Έλ¨ μ’ λ£
1
main
ν¨μ μ λ¦¬ν΄ μ νμ΄ μ νΈνλλ μ νint
μΈ κ²½μ°, μ΄κΈ°main
νΈμΆμμexit
ν¨μλ‘μ 리ν΄μmain
ν¨μκ° λ¦¬ν΄ ν κ°μ μΈμλ‘ μ¬μ© νμ¬ ν¨μ λ₯Ό νΈμΆνλ κ²κ³Ό κ°μ΅λλ€ . 11)}
μ’ λ£
μ λλ¬νλ©΄main
ν¨μκ° κ° 0μ 리ν΄ν©λλ€. λ¦¬ν΄ μ νμ΄μ νΈνλμ§ μμΌλ©΄int
νΈμ€νΈ νκ²½μΌλ‘ 리ν΄λλ μ’ λ£ μνλ μ§μ λμ§ μμ΅λλ€.11) 6.2.4μ λ°λΌ, μλ μ μ₯ κΈ°κ°μ΄ μ μΈ λ κ°μ²΄μ μλͺ μ
main
μ μμ κ²½μ°μλ μμμ§λ§, μ μμ κ²½μ°μλ λλ¬λ€.
μ°Έκ³ 0
βμ±κ³΅βμΌλ‘ μ무νλλ€. μν κ²½μ° EXIT_FAILURE
and EXIT_SUCCESS
λ₯Ό μ¬μ©ν μ <stdlib.h>
μμ§λ§ 0μ μ μ€μ λμ΄ μμΌλ©° 1λ λ§μ°¬κ°μ§μ
λλ€. μ°Έμ‘° 255λ³΄λ€ ν° μ’
λ£ μ½λ-κ°λ₯ν©λκΉ? .
C89 (λ° Microsoft C)μμλ main()
ν¨μκ° λ¦¬ν΄νμ§λ§ λ¦¬ν΄ κ°μ μ§μ νμ§ μμΌλ©΄ μ΄λ»κ²λλμ§μ λν μ€λͺ
μ΄ μμ΅λλ€ . κ·Έλ¬λ―λ‘ κ·Έκ²μ μ μλμ§ μμ νλμΌλ‘ μ΄μ΄μ§λ€.
7.22.4.4
exit
κΈ°λ₯ΒΆ5 λ§μ§λ§μΌλ‘ μ μ΄λ νΈμ€νΈ νκ²½μΌλ‘ λμκ°λλ€. μ κ°
status
μ΄ 0 λλ μΈEXIT_SUCCESS
κ²½μ°, ꡬν μ±κ³΅ μνμ ꡬν μ μ μμ μ΄ λ¦¬ν΄λ©λλ€. μ κ°status
μ΄EXIT_FAILURE
μΈ κ²½μ° κ΅¬νμ΄ μ μν μν μ€ν¨ μνμ μ’ λ£ κ° λ°νλ©λλ€. κ·Έλ μ§ μμΌλ©΄ λ°ν λ μνλ ꡬν μ μμ λλ€.
νμ€ C ++ β νΈμ€ν νκ²½
C ++ 11 νμ€ (ISO / IEC 14882 : 2011)μ λ€μκ³Ό κ°μ΄ λ§ν©λλ€.
3.6.1 μ£Όμ κΈ°λ₯ [basic.start.main]
ΒΆ1 νλ‘κ·Έλ¨μ mainμ΄λΌλ κΈλ‘λ² κΈ°λ₯μ ν¬ν¨ν΄μΌνλ©°, νλ‘κ·Έλ¨μ μ§μ λ μμμ λλ€. [β¦]
ΒΆ2 ꡬνμ μ£Όμ κΈ°λ₯μ 미리 μ μνμ§ μμμΌνλ€. μ΄ κΈ°λ₯μ κ³ΌλΆνλμ§ μμμΌνλ€. int νμ μ λ¦¬ν΄ νμ μ κ°μ ΈμΌνμ§λ§ κ·Έλ μ§ μμΌλ©΄ νμ μ΄ κ΅¬ν μ μλ©λλ€. λͺ¨λ ꡬνμ λ€μ main μ μλ₯Ό λͺ¨λ νμ©ν΄μΌν©λλ€.
int main() { /* ... */ }
κ³Ό
int main(int argc, char* argv[]) { /* ... */ }
νμμ νμ
argc
μ νλ‘κ·Έλ¨μ΄ μ€νλλ νκ²½μμ νλ‘κ·Έλ¨μ μ λ¬ λ μΈμμ μμ λλ€. κ²½μ°argc
μ΄λ¬ν μΈμλ₯Ό 곡κΈν΄μΌνλ€ μ λ‘ μ΄μΈμargv[0]
λ₯Ό ν΅ν΄argv[argc-1]
λ (null)λ‘ μ’ λ£λλ λ©ν° λ°μ΄νΈ λ¬Έμμ΄μ 첫 λ¬Έμ (NTMBSs) (17.5.2.1.4.2)μ λν ν¬μΈν°λ‘μargv[0]
νλ λ° μ¬μ©λλ μ΄λ¦μ λνλ΄λ NTMBSμ μ΄κΈ° λ¬Έμμ λν ν¬μΈν°νλ€ νλ‘κ·Έλ¨μ νΈμΆνμμμ€""
. μ κ°μargc
μμκ° μλμ΄μΌνλ€. μ κ°μargv[argc]
0μ΄μ΄μΌνλ€. [μ°Έκ³ : μ΄νμ (μ νμ ) νλΌλ―Έν°λ₯Ό λ μΆκ° ν κ²μ κΆμ₯νλ€argv
. β λ λ ΈνΈ]ΒΆ3 κΈ°λ₯
main
μ νλ‘κ·Έλ¨ λ΄μμ μ¬μ©λμ§ μμμΌν©λλ€. μ°κ³ (3.5)main
λ ꡬνμ λ°λΌ μ μλ©λλ€. [β¦]ΒΆ5 mainμ return λ¬Έμ main ν¨μλ₯Ό λ λκ³ (μλ μ μ₯ μκ°μ΄μλ κ°μ²΄λ₯Ό νκ΄΄ ν¨)
std::exit
return κ°μ μΈμλ‘ νΈμΆ νλ ν¨κ³Όκ° μμ΅λλ€. λ¦¬ν΄ λ¬Έμ΄ λ°μνμ§ μκ³ μ μ΄κ° λ©μΈμ λμ λλ¬νλ©΄ κ·Έ κ²°κ³Όλ μ€νμ ν¨κ³Όμ λλ€return 0;
C ++ νμ€μ λͺ
μ μ μΌλ‘ β[μ£Ό ν¨μ]λ μ νμ λ¦¬ν΄ μ νμ κ°μ ΈμΌ int
νμ§λ§ κ·Έλ μ§ μμ κ²½μ° μ νμ΄ κ΅¬ν μ μλ©λλ€βλΌκ³ λͺ
μνκ³ C νμ€κ³Ό λμΌν λ μλͺ
μ μ΅μ
μΌλ‘ μ§μν΄μΌν©λλ€. λ°λΌμ βvoid main ()βμ C ++ νμ€μμ μ§μ νμ©λμ§ μμ§λ§ λμμ νμ©νλ λΉνμ€ κ΅¬νμ μ€μ§νλ λ°©λ²μ μμ΅λλ€. C ++λ μ¬μ©μκ° νΈμΆ ν main
μ μλλ‘ν©λλ€ (κ·Έλ¬λ C νμ€μ κ·Έλ μ§ μμ΅λλ€).
C ++ 11 νμ€ μλ Β§7.22.4.4μ λ¨λ½κ³Ό λμΌν Β§18.5 μμ λ° μ’
λ£ λ¨λ½μ΄ μμ΅λλ€.exit
κΈ°λ₯ C11 νμ€μμ (μ μΈμ©)μ (λ°λ‘ κ°μ£Όμμ, μ΄λ λ¨μν λ¬Έμ κ·Έ EXIT_SUCCESS
μ EXIT_FAILURE
μ μ μμ <cstdlib>
).
νμ€ C β κ³΅ν΅ νμ₯
μΌλ°μ μΌλ‘ Unix μμ€ν μ μΈ λ²μ§Έ λ³νμ μ§μν©λλ€.
int main(int argc, char **argv, char **envp) { ... }
μΈ λ²μ§Έ μΈμλ nullλ‘ λλλ λ¬Έμμ΄μ λν ν¬μΈν° λͺ©λ‘μΌλ‘, κ°κ° μ΄λ¦, λ±νΈ λ° κ° (λΉμ΄μμ μ μμ)μ κ°λ νκ²½ λ³μμ
λλ€. μ΄κ²μ μ¬μ©νμ§ μμΌλ©΄ μ¬μ ν β extern char **environ;
β λ₯Ό ν΅ν΄ νκ²½μ λλ¬ ν μ μμ΅λλ€ . μ΄ μ μ λ³μλμ΄λ₯Ό μ μΈνλ ν€λκ° μλ€λ μ μμ POSIXμ κ³ μ λ³μμ
λλ€.
μ΄λ C νμ€μ μν΄ λΆλ‘ Jμ λ¬Έμνλμ΄μλ κ³΅ν΅ νμ₯λͺ μΌλ‘ μΈμλ©λλ€.
J.5.1 νκ²½ μΈμ
ΒΆ1 νΈμ€νΈ λ νκ²½μμ, main ν¨μλ
char *envp[]
μ λν λλ‘ λλλ ν¬μΈν° λ°°μ΄μ κ°λ¦¬ν€λ μΈ λ²μ§Έ μΈμλ₯Όλ°μ΅λλ€.char
κ° ν¬μΈν° λ νλ‘κ·Έλ¨μμ΄ μ€νμμν νκ²½μ λν μ 보λ₯Ό μ 곡νλ λ¬Έμμ΄μ κ°λ¦¬ ν΅λλ€ (5.1. 2.2.1).
λ§μ΄ν¬λ‘ μννΈ C
λ§μ΄ν¬λ‘ μννΈ VS 2010 μ»΄νμΌλ¬λ ν₯λ―Έ λ‘λ€. μΉ μ¬μ΄νΈλ λ§ν©λλ€ :
mainμ μ μΈ κ΅¬λ¬Έμ
int main();
λλ μ νμ μΌλ‘
int main(int argc, char *argv[], char *envp[]);
λλ
main
λ°wmain
ν¨μλ₯Ό λ°νμΌλ‘ μ μΈ ν μ μμ΅λλ€void
(λ°ν κ° μμ). void λ₯Ό μ μΈmain
νκ±°λwmain
리ν΄νλ©΄ return λ¬Έμ μ¬μ©νμ¬ μ’ λ£ μ½λλ₯Ό μμ νλ‘μΈμ€ λλ μ΄μ 체μ μ λ¦¬ν΄ ν μ μμ΅λλ€.main
λλwmain
λ‘ μ μΈ λμμ λ μ’ λ£ μ½λλ₯Ό λ°ννλ €λ©΄ ν¨μvoid
λ₯Ό μ¬μ©ν΄μΌν©λλ€exit
.
νλ‘κ·Έλ¨ void main()
μ΄ μ’
λ£ λ λ μ΄λ€ κ²°κ³Όκ° λ°μνλμ§ (λΆλͺ¨ λλ OSμ μ΄λ€ μ’
λ£ μ½λκ° λ°νλλμ§) λͺ
ννμ§ μμΌλ©° MS μΉ μ¬μ΄νΈλ μλμ
λλ€.
ν₯λ―Έλ‘κ²λ MSλ main()
C λ° C ++ νμ€μ νμν λ κ°μ§ μΈμ λ²μ μ κ·μ νμ§ μμ΅λλ€ . char **envp
νκ²½ λ³μ λͺ©λ‘μ λν ν¬μΈν° μΈ μΈ λ²μ§Έ μΈμκ°μλ μΈ κ°μ§ μΈμ νμ λ§ κ·μ ν©λλ€.
Microsoft νμ΄μ§μλ λ€λ₯Έ λμλ μμ΅λλ€. wmain()
μ΄ λ°©λ²μ λμ λ¬Έμμ΄μ μ¬μ©νλ©° κ·Έ μμ΅λλ€.
μ΄ νμ΄μ§ μ Microsoft Visual Studio 2005 λ²μ μ λμμΌλ‘ λμ΄λμ§ μμ΅λλ€ . λ²μ μ λ§μ΄ν¬λ‘ μννΈ λΉμ£ΌμΌ μ€νλμ€ 2008 λ
μ΄ν μμ΅λλ€.void main()
νμ€ C β λ 립ν νκ²½
μμ μΈκΈνλ―μ΄ μμ μꡬ μ¬νμ νΈμ€ν
λ νκ²½μ μ μ©λ©λλ€. λ
립 νκ²½ (νΈμ€νΈ νκ²½μ λμ)μΌλ‘ μμ
νλ κ²½μ° νμ€μ λν μΈκΈμ΄ ν¨μ¬ μ μ΅λλ€. λ
립ν νκ²½μ κ²½μ° νλ‘κ·Έλ¨ μμμ νΈμΆ λ ν¨μλ₯Ό νΈμΆ ν νμ main
κ° μμΌλ©° λ¦¬ν΄ μ νμ λν μ νμ΄ μμ΅λλ€. νμ€μ λ§νλ€ :
5.1.2 μ€ν νκ²½
λ 립ν λ° νΈμ€ν μ λ κ°μ§ μ€ν νκ²½μ΄ μ μλ©λλ€. λ κ²½μ° λͺ¨λ, μ§μ λ C ν¨μκ° μ€ν νκ²½μ μν΄ νΈμΆ λ λ νλ‘κ·Έλ¨ μμμ΄ λ°μν©λλ€. μ μ μ μ₯ κΈ°κ°μ κ°μ§ λͺ¨λ κ°μ²΄λ νλ‘κ·Έλ¨ μμ μ μ μ΄κΈ°νλμ΄μΌν©λλ€ (μ΄κΈ° κ°μΌλ‘ μ€μ ). κ·Έλ¬ν μ΄κΈ°νμ λ°©μ λ° νμ΄λ°μ λ¬λ¦¬ λͺ μλμ§ μλλ€. νλ‘κ·Έλ¨ μ’ λ£λ μ μ΄λ₯Ό μ€ν νκ²½μΌλ‘ λλ립λλ€.
5.1.2.1 λ 립 νκ²½
C νκ²½μμ μ΄μ 체μ μ μ΄μ μμ΄ C νλ‘κ·Έλ¨μ΄ μ€νλ μμλ λ 립 νκ²½μμλ νλ‘κ·Έλ¨ μμμ νΈμΆλλ ν¨μμ μ΄λ¦κ³Ό μ νμ΄ κ΅¬ν μ μλ©λλ€. μ‘°ν 4μ μν΄ μꡬλλ μ΅μ μΈνΈ μ΄μΈμ λ 립 νλ‘κ·Έλ¨μ μ΄μ© κ°λ₯ν λͺ¨λ λμκ΄ μμ€μ ꡬνμ λ°λΌ μ μλ©λλ€.
λ 립 νκ²½μμ νλ‘κ·Έλ¨ μ’ λ£μ μν₯μ ꡬν μ μλ©λλ€.
μ‘°ν 4 μ ν©μ±μ λν μνΈ μ°Έμ‘°λ λ€μκ³Ό κ°μ΅λλ€.
ΒΆ5 μ격νκ² μ€μνλ νλ‘κ·Έλ¨ μμ΄ κ΅μ νμ€μ λͺ μλ μΈμ΄ λ° λΌμ΄λΈλ¬λ¦¬μ κΈ°λ₯ λ§ μ¬μ©ν΄μΌν©λλ€. 3) μ§μ λμ§ μκ±°λ μ μλμ§ μμ λλ ꡬν μ μ λ λμμ λ°λΌ μΆλ ₯μ μμ±νμ§ μμμΌνλ©° μ΅μ ꡬν μ νμ μ΄κ³Όν΄μλ μλ©λλ€.
ΒΆ6 μ€μ ꡬνμ λ κ°μ§ ννλ νΈμ€ν λκ³ λ 립ν μ λλ€. μ€μ νΈμ€ν ꡬνμ μ΄λ€ μ격νκ² μ€μ νλ‘κ·Έλ¨μ μμ©νμ¬μΌνλ€. μ€μ μ립 ꡬν λΌμ΄λΈλ¬λ¦¬ μ (7 μ )μ μ§μ λ κΈ°λ₯μ μ¬μ©μ΄ νμ€ ν€λμ λ΄μ©μ κ΅νλλ λͺ¨λ μ격ν μ€μ νλ‘κ·Έλ¨μ μμ©νμ¬μΌνλ€
<float.h>
,<iso646.h>
,<limits.h>
,<stdalign.h>
,
<stdarg.h>
,<stdbool.h>
,<stddef.h>
,<stdint.h>
,μ
<stdnoreturn.h>
. μ ν©ν ꡬνμ μ격νκ² μ€μνλ νλ‘κ·Έλ¨μ λμμ λ³κ²½νμ§ μλ ν νμ₯ (μΆκ° λΌμ΄λΈλ¬λ¦¬ κΈ°λ₯ ν¬ν¨)μ κ°μ§ μ μμ΅λλ€. 4)ΒΆ7 μ€μ νλ‘κ·Έλ¨ μ μ€μ ꡬνμ νμ©λλ νλ‘κ·Έλ¨ μ λλ€. 5)
3) μ격νκ² μ€μνλ νλ‘κ·Έλ¨μ κ΄λ ¨ 맀ν¬λ‘λ₯Ό μ¬μ©νμ¬ μ μ ν μ‘°κ±΄λΆ ν¬ν¨ μ μ²λ¦¬ μ§μλ¬Έμ μν΄ λ³΄νΈλλ κ²½μ° μ‘°κ±΄λΆ κΈ°λ₯ (6.10.8.3 μ°Έμ‘°)μ μ¬μ©ν μ μμ΅λλ€. μλ₯Ό λ€λ©΄ λ€μκ³Ό κ°μ΅λλ€.
#ifdef __STDC_IEC_559__ /* FE_UPWARD defined */ /* ... */ fesetround(FE_UPWARD); /* ... */ #endif
4) μ΄λ μ ν©ν ꡬνμ΄μ΄ κ΅μ νμ€μ λͺ μ μ μΌλ‘ μμ½ λ μλ³μ μ΄μΈμ μλ³μλ₯Ό 보μ νμ§ μμμ μλ―Έν©λλ€.
5) μ격νκ² μ ν©ν νλ‘κ·Έλ¨μ μ ν©ν ꡬν μ€μμ μ΅λν μ΄μμ±μ κ°λλ‘ κ³ μλμμ΅λλ€. μ ν©ν νλ‘κ·Έλ¨μ μ ν©ν ꡬνμ μ΄μ λΆκ°λ₯ν κΈ°λ₯μ λ°λΌ λ¬λΌμ§ μ μμ΅λλ€.
μ€μ λ‘ λͺ¨λ κΈ°λ₯μ μ μνλ λ
립ν νκ²½μ νμν μ μΌν ν€λλ λ€μκ³Ό κ°μ΅λλ€. <stdarg.h>
(λ¨μ§ 맀ν¬λ‘ μΌ μλ μκ³ μ’
μ’
맀ν¬λ‘ μΌ μλ μμ .
νμ€ C ++ β λ 립ν νκ²½
C νμ€μ΄ νΈμ€ν νκ²½κ³Ό λ 립 νκ²½μ λͺ¨λ μΈμνλ κ²μ²λΌ C ++ νμ€λ μΈμν©λλ€. (ISO / IEC 14882 : 2011μ μΈμ©λ¬Έ)
1.4 ꡬν μ€μ [intro.compliance]
ΒΆ7 λ κ°μ§ μ’ λ₯μ ꡬνμ΄ μ μλμ΄μλ€ : νΈμ€ν ꡬν κ³Ό λ 립 ꡬν . νΈμ€ν λ ꡬνμ κ²½μ°μ΄ κ΅μ νμ€μ μ¬μ© κ°λ₯ν λΌμ΄λΈλ¬λ¦¬ μΈνΈλ₯Ό μ μν©λλ€. λ 립 μ€ν ν ꡬνμ μ΄μ 체μ μ μ΄μ μμ΄ μ€νν μ μμΌλ©° νΉμ μΈμ΄ μ§μ λΌμ΄λΈλ¬λ¦¬ (17.6.1.3)λ₯Ό ν¬ν¨νλ ꡬν μ μ λΌμ΄λΈλ¬λ¦¬ μΈνΈλ₯Ό κ°μ§κ³ μμ΅λλ€.
ΒΆ8 μ ν©ν ꡬνμ μ¬λ°λ₯Έ νμμ νλ‘κ·Έλ¨μ λμμ λ³κ²½νμ§ μλ ν νμ₯ κΈ°λ₯ (μΆκ° λΌμ΄λΈλ¬λ¦¬ κΈ°λ₯ ν¬ν¨)μ κ°μ§ μ μμ΅λλ€. μ΄ κ΅μ νμ€μ λ°λΌ μλͺ»λ νμ₯μ μ¬μ©νλ νλ‘κ·Έλ¨μ μ§λ¨νλ €λ©΄ ꡬνμ΄ νμν©λλ€. κ·Έλ¬λ κ·Έλ κ²νλ©΄ κ·Έλ¬ν νλ‘κ·Έλ¨μ μ»΄νμΌνκ³ μ€νν μ μμ΅λλ€.
ΒΆ9 κ° κ΅¬νμ μ§μνμ§ μλ λͺ¨λ μ‘°κ±΄λΆ μ§μ ꡬμ±μ μλ³νκ³ λͺ¨λ λ‘μΌμΌ νΉμ νΉμ±μ μ μνλ λ¬Έμλ₯Ό ν¬ν¨ν΄μΌν©λλ€. μΌ
3) μ΄ λ¬Έμλ λν ꡬν μ μ λμμ μ μν©λλ€. 1.9 μ°Έμ‘°
17.6.1.3 λ 립 μ€ν ν ꡬν [κ·μ μ€μ]
νΈμ€ν λ° λ 립 μ€ν ν (1.4)μ λ κ°μ§ ꡬνμ΄ μ μλ©λλ€. νΈμ€ν λ ꡬνμ κ²½μ°μ΄ κ΅μ νμ€μ μ¬μ© κ°λ₯ν ν€λ μΈνΈλ₯Ό μ€λͺ ν©λλ€.
λ 립 ꡬνμλ ꡬν μ μ ν€λ μΈνΈκ° μμ΅λλ€. μ΄ μΈνΈλ μ΅μν ν 16μ νμλ ν€λλ₯Ό ν¬ν¨ν΄μΌνλ€.
ν€λ μ 곡λ λ²μ
<cstdlib>
μ μ μΈνλ€ μ μ΄λ ν¨μabort
,atexit
,at_quick_exit
,exit
, λ°quick_exit
(18.5). μ΄ νμ λμ΄λ λ€λ₯Έ ν€λλ νΈμ€ν λ ꡬνκ³Ό λμΌν μꡬ μ¬νμ μΆ©μ‘±ν΄μΌν©λλ€.ν 16 β λ 립ν ꡬνμμν C ++ ν€λ
Subclause Header(s) <ciso646> 18.2 Types <cstddef> 18.3 Implementation properties <cfloat> <limits> <climits> 18.4 Integer types <cstdint> 18.5 Start and termination <cstdlib> 18.6 Dynamic memory management <new> 18.7 Type identification <typeinfo> 18.8 Exception handling <exception> 18.9 Initializer lists <initializer_list> 18.10 Other runtime support <cstdalign> <cstdarg> <cstdbool> 20.9 Type traits <type_traits> 29 Atomics <atomic>
int main()
Cμμ μ¬μ©νλ κ²μ μ΄λ»μ΅λκΉ?
C11 νμ€ μΌμ νμ€ Β§5.1.2.2.1 μ νΈνλ νκΈ°λ² βΒ int main(void)
-νμ§λ§ λ³΄μ¬ νμ€μ λ μμ λ μμ΅λλ€ int main()
: Β§6.5.3.4 ΒΆ8 λ° Β§6.7.6.3 ΒΆ20 . μ΄μ μμ λ βκ·λ² μ βμ΄ μλλΌλ μ μ μ μν΄μΌν©λλ€. κ·Έλ€μ λ¨μ§ μμ μΌ λΏμ΄λ€. μμ μ λ²κ·Έκ° μμΌλ©΄ νμ€ λ³Έλ¬Έμ μ§μ μν₯μ λ―ΈμΉμ§ μμ΅λλ€. μ¦, μμλλ λμμ κ°λ ₯νκ² λνλ΄λ―λ‘ νμ€ int main()
μ μμ κ° ν¬ν¨ λμ΄ int main()
μμΌλ©΄ μ νΈ νκΈ°λ²μ΄ μλλλΌλ κΈμ§λμ§ μλ κ²μ΄ μ’μ΅λλ€.
6.5.3.4
sizeof
λ°_Alignof
μ°μ°μβ¦
ΒΆ8 μ 3μ΄ μμμ, κ°λ³ κΈΈμ΄ λ°°μ΄μ ν¬κΈ°λ κ³μ°λμ΄ ν¨μμμ λ°νλ©λλ€.
#include <stddef.h> size_t fsize3(int n) { char b[n+3]; // variable length array return sizeof b; // execution time sizeof } int main() { size_t size; size = fsize3(10); // fsize3 returns 13 return 0; }
λ΅λ³
λλ λλ main()
μ€ νλλ₯Ό λ°νν΄μΌ νλ€κ³ μκ°ν©λλ€ . κ·Έλ€μμ μ μλμ΄ μμ΅λλ€EXIT_SUCCESS
EXIT_FAILURE
stdlib.h
λ΅λ³
C λ° C ++ νμ€μ λ 립ν λ° νΈμ€ν μ λ κ°μ§ ꡬν μ νμ μ μν©λλ€.
-
C90 νΈμ€ν νκ²½
νμ©λλ μμ 1 :
int main (void) int main (int argc, char *argv[]) main (void) main (int argc, char *argv[]) /*... etc, similar forms with implicit int */
μ½λ©νΈ:
μμ λ κ°λ νμ© λ νμμΌλ‘ λͺ μ μ μΌλ‘ μΈκΈλμ΄ μμΌλ©°, C90μ λ¦¬ν΄ μ ν λ° ν¨μ λ§€κ° λ³μμ βimplicit intβλ₯Ό νμ©νκΈ° λλ¬Έμ λ€λ₯Έ κ²μ λ΄μ¬μ μΌλ‘ νμ©λ©λλ€. λ€λ₯Έ νμμ νμ©λμ§ μμ΅λλ€.
-
C90 λ 립ν νκ²½
mainμ λͺ¨λ νμ λλ μ΄λ¦μ΄ νμ©λ©λλ€ 2 .
-
C99 νΈμ€ν νκ²½
νμ©λλ μμ 3 :
int main (void) int main (int argc, char *argv[]) /* or in some other implementation-defined manner. */
μ½λ©νΈ:
C99κ° βimplicit intβλ₯Ό μ κ±° νμΌλ―λ‘
main()
λ μ΄μ μ ν¨νμ§ μμ΅λλ€.βλλ λ€λ₯Έ ꡬν μ μ λ°©μμΌλ‘βμ΄μν, λͺ¨νΈν λ¬Έμ₯μ΄ μκ°λμμ΅λλ€. μ΄λ β
int main()
λ€μν λ§€κ° λ³μ βλλ βmainμ΄ κ΅¬ν μ μ νμμ κ°μ§ μ μμβ μΌλ‘ ν΄μ λ μ μμ΅λλ€.μΌλΆ μ»΄νμΌλ¬λ νμμ λ°©μμΌλ‘ νμ€μ ν΄μνκΈ°λ‘ μ ννμ΅λλ€. μμ¬ ν μ¬μ§μμ΄, νμ€ μμ²΄κ° λͺ¨νΈνκΈ° λλ¬Έμ νμ€ μ체λ₯Ό μΈμ©νμ¬ μ격νκ² μ€μνμ§ μλλ€κ³ μ½κ² λ§ν μλ μμ΅λλ€.
κ·Έλ¬λ μμ ν κ±°μΉ ννλ₯Ό νμ©νλ€λ
main()
κ²μ μλ§λμ΄ μλ‘μ΄ λ¬Έμ₯μ μλκ° μλμμ κ²μ λλ€. C99μ μ΄λ‘ μ κ·Όκ±° (κ·λ²μ΄ μλ)λ λ¬Έμ₯μ΄int main
4μ λν μΆκ° λ§€κ° λ³μλ₯Ό λνλ λλ€ .κ·Έλ¬λ νΈμ€νΈ λ νκ²½ νλ‘κ·Έλ¨ μ’ λ£ μΉμ μ mainμ΄ int 5λ₯Ό λ°ννμ§ μλ κ²½μ°μ λν΄ λ Όμμ κ³μν©λλ€ . μ΄ μΉμ μ mainμ μ μΈνλ λ°©λ²μ λν κ·λ²μ μλμ§λ§ νΈμ€νΈ μμ€ν μμλ mainμ΄ μμ ν ꡬν μ μ λ λ°©μμΌλ‘ μ μΈ λ μ μμμ μλ―Έν©λλ€.
-
C99 λ 립ν νκ²½
mainμ λͺ¨λ νμ λλ μ΄λ¦μ΄ νμ©λ©λλ€ 6 .
-
C11 νΈμ€ν νκ²½
νμ© λ μμ 7 :
int main (void) int main (int argc, char *argv[]) /* or in some other implementation-defined manner. */
-
C11 λ 립ν νκ²½
mainμ λͺ¨λ νμ λλ μ΄λ¦μ΄ νμ©λ©λλ€ 8 .
μ°Έκ³ int main()
μμ λ²μ μ€μμ Cμ νΈμ€ν
ꡬνμμν μ ν¨ν ννλ‘ λμ΄λμ§ μμλ€. Cμμ, Cλ λ¬λ¦¬ ++, ()
κ·Έλ¦¬κ³ (void)
λ€λ₯Έ μλ―Έλ₯Ό κ°μ§κ³ μλ€. μ μλ μΈμ΄μμ μ κ±° λ μμλ λ μ΄μ μ¬μ©λμ§ μλ κΈ°λ₯μ
λλ€. C11 ν₯ν μΈμ΄ μ§μ μ¬ν μ°Έμ‘° :
6.11.6 ν¨μ μ μΈμ
λΉ κ΄νΈ (νλ‘ν νμ νμ λ§€κ° λ³μ μ ν μ μΈμκ° μλ)μ ν¨κ» ν¨μ μ μΈμλ₯Ό μ¬μ©νλ κ²μ λ μ΄μ μ¬μ©λμ§ μλ κΈ°λ₯μ λλ€.
-
C ++ 03 νΈμ€ν νκ²½
νμ©λλ μμ 9 :
int main () int main (int argc, char *argv[])
μ½λ©νΈ:
첫 λ²μ§Έ μμμ λΉ κ΄νΈμ μ μνμμμ€. μ΄ κ²½μ° C ++κ³Ό Cλ λ€λ¦ λλ€. C ++μμλ ν¨μκ° λ§€κ° λ³μλ₯Ό μ¬μ©νμ§ μκΈ° λλ¬Έμ λλ€. κ·Έλ¬λ Cμμλ λ§€κ° λ³μλ₯Ό μ¬μ©ν μ μμμ μλ―Έν©λλ€.
-
C ++ 03 λ 립 νκ²½
μμμ νΈμΆ λ ν¨μμ μ΄λ¦μ ꡬν μ μλ©λλ€. μ΄λ¦μ΄ μ§μ λ κ²½μ°
main()
λͺ μλ μμ 10μ λ°λΌμΌν©λλ€ .// implementation-defined name, or int main () int main (int argc, char *argv[])
-
C ++ 11 νΈμ€ν νκ²½
νμ© λ μμ 11 :
int main () int main (int argc, char *argv[])
μ½λ©νΈ:
νμ€μ ν μ€νΈκ° λ³κ²½λμμ§λ§ λμΌν μλ―Έλ₯Ό κ°μ΅λλ€.
-
C ++ 11 λ 립 νκ²½
μμμ νΈμΆ λ ν¨μμ μ΄λ¦μ ꡬν μ μλ©λλ€. μ΄λ¦μ΄ μ§μ λ κ²½μ°
main()
λͺ μλ μμ 12λ₯Ό λ°λΌμΌν©λλ€ .// implementation-defined name, or int main () int main (int argc, char *argv[])
μ°Έκ³ λ¬Έν
-
ANSI X3.159-1989 2.1.2.2 νΈμ€ν νκ²½. βνλ‘κ·Έλ¨ μμβ
νλ‘κ·Έλ¨ μμμ νΈμΆλλ κΈ°λ₯μ μ΄λ¦μ mainμ λλ€. ꡬνμμ΄ ν¨μμ λν νλ‘ν νμ μ μ μΈνμ§ μμ΅λλ€. λ°ν μ νμ intμ΄λ©° λ§€κ° λ³μλ μμ΅λλ€.
int main(void) { /* ... */ }
λλ λ κ°μ λ§€κ° λ³μκ° μμ΅λλ€ (μ¬κΈ°μλ argc λ° argvλΌκ³ ν¨). μ μΈ λ ν¨μμ λ‘컬μ΄κΈ° λλ¬Έμ μ΄λ€ μ΄λ¦μ΄λ μ¬μ©ν μ μμ΅λλ€.
int main(int argc, char *argv[]) { /* ... */ }
-
ANSI X3.159-1989 2.1.2.1 λ 립 νκ²½ :
C νκ²½μμ μ΄μ 체μ μ μ΄μ μμ΄ C νλ‘κ·Έλ¨μ΄ μ€νλ μμλ λ 립 νκ²½μμλ νλ‘κ·Έλ¨ μμμ νΈμΆλλ ν¨μμ μ΄λ¦κ³Ό μ νμ΄ κ΅¬ν μ μλ©λλ€.
-
ISO 9899 : 1999 5.1.2.2 νΈμ€ν νκ²½-> 5.1.2.2.1 νλ‘κ·Έλ¨ μμ
νλ‘κ·Έλ¨ μμμ νΈμΆλλ κΈ°λ₯μ μ΄λ¦μ mainμ λλ€. ꡬνμμ΄ ν¨μμ λν νλ‘ν νμ μ μ μΈνμ§ μμ΅λλ€. λ°ν μ νμ intμ΄λ©° λ§€κ° λ³μλ μμ΅λλ€.
int main(void) { /* ... */ }
λλ λ κ°μ λ§€κ° λ³μκ° μμ΅λλ€ (μ¬κΈ°μλ argc λ° argvλΌκ³ ν¨). μ μΈ λ ν¨μμ λ‘컬μ΄κΈ° λλ¬Έμ μ΄λ€ μ΄λ¦μ΄λ μ¬μ©ν μ μμ΅λλ€.
int main(int argc, char *argv[]) { /* ... */ }
λλ λ±κ°; 9) λλ λ€λ₯Έ ꡬν μ μ λ°©μμΌλ‘.
-
κ΅μ νμ€μ μ΄λ‘ μ κ·Όκ±° β νλ‘κ·Έλλ° μΈμ΄ β C, κ°μ ν 5.10. 5.1.2.2 νΈμ€ν νκ²½-> 5.1.2.2.1 νλ‘κ·Έλ¨ μμ
mainμ λν μΈμμ λμκ³Ό exit, main λ° atexitμ μνΈ μμ© (Β§7.20.4.2 μ°Έμ‘°)μ λμμ argv λ¬Έμμ΄ ννκ³Ό mainμ΄ λ°ν ν κ°μ μλ―Έμμ μνμ§ μλ λ€μμ±μ μ΅μ νκΈ° μν΄ μ²΄κ³νλμμ΅λλ€.
mainμ λν μΈμλ‘ argc λ° argvλ₯Ό μ§μ νλ©΄ κ΄λ²μν μ¬μ μ°μ΅μ΄ μΈμλ©λλ€. argv [argc]λ λͺ©λ‘μ λ λΆλΆμ λν μ€λ³΅ κ²μ¬λ₯Ό μ 곡νκ³ μΌλ°μ μΈ κ΄νμ λ°λΌ λ ν¬μΈν° μ¬μΌν©λλ€.
mainμ 0 λλ 2 κ°μ μΈμλ‘ μ μΈ ν μμλ μ μΌν ν¨μμ λλ€. (λ€λ₯Έ ν¨μμ μΈμ μλ νΈμΆκ³Ό μ μ μ¬μ΄μ μ νν μΌμΉν΄μΌν©λλ€.)μ΄ νΉλ³ν κ²½μ°λ νλ‘κ·Έλ¨μ΄ νλ‘κ·Έλ¨ μΈμ λ¬Έμμ΄μ μ‘μΈμ€νμ§ μμ λ μΈμλ₯Ό mainμΌλ‘ λ¨κ²¨ λλ κ΄λ²μν κ΄νμ λ¨μν μΈμν©λλ€. λ§μ ꡬνλ€μ΄ μ£Όμν μ£Όμ₯μ λν΄ λ κ°μ§ μ΄μμ μ£Όμ₯μμ§μ§νμ§λ§, κ·Έλ¬ν κ΄νμ νμ€μ μν΄ μΆλ³΅ λ°κ±°λ κΈμ§λμ§ μμ΅λλ€. μΈ κ°μ μΈμλ‘ mainμ μ μνλ νλ‘κ·Έλ¨μ μ격νκ² μ€μνμ§ μμ΅λλ€ (Β§J.5.1 μ°Έμ‘°).
-
ISO 9899 : 1999 5.1.2.2 νΈμ€ν νκ²½-> 5.1.2.2.3 νλ‘κ·Έλ¨ μ’ λ£
λ©μΈ ν¨μμ λ¦¬ν΄ νμ INTμ νΈνλλ νμμ΄λ©΄, μ£Ό κΈ°λ₯μ μ΄κΈ° νΈμΆλ‘λΆν°μ 볡κ·λ₯Ό μΈμλ‘μ λ©μΈ ν¨μμ μν΄ λ¦¬ν΄ λ κ°κ³Ό μ’ λ£ ν¨μ νΈμΆνλ κ²κ³Ό; λλ¬) 11
}
κ²μ μ’ λ£ main ν¨μλ κ° 0μ 리ν΄ν©λλ€. λ¦¬ν΄ μ νμ΄ intμ νΈνλμ§ μμΌλ©΄ νΈμ€νΈ νκ²½μΌλ‘ λ¦¬ν΄ λ μ’ λ£ μνλ μ§μ λμ§ μμ΅λλ€. -
ISO 9899 : 1999 5.1.2.1 λ 립ν νκ²½
C νκ²½μμ μ΄μ 체μ μ μ΄μ μμ΄ C νλ‘κ·Έλ¨μ΄ μ€νλ μμλ λ 립 νκ²½μμλ νλ‘κ·Έλ¨ μμμ νΈμΆλλ ν¨μμ μ΄λ¦κ³Ό μ νμ΄ κ΅¬ν μ μλ©λλ€.
-
ISO 9899 : 2011 5.1.2.2 νΈμ€ν νκ²½-> 5.1.2.2.1 νλ‘κ·Έλ¨ μμ
μ΄ μΉμ μ μμμ μΈμ© ν C99μ λμΌν©λλ€.
-
ISO 9899 : 1999 5.1.2.1 λ 립ν νκ²½
μ΄ μΉμ μ μμμ μΈμ© ν C99μ λμΌν©λλ€.
-
ISO 14882 : 2003 3.6.1 μ£Όμ κΈ°λ₯
ꡬνμ΄ μ£Όμ κΈ°λ₯μ 미리 μ μν΄μλ μλ©λλ€. μ΄ κΈ°λ₯μ κ³ΌλΆνλμ§ μμμΌνλ€. int μ νμ λ¦¬ν΄ μ νμ κ°μ ΈμΌνμ§λ§ κ·Έλ μ§ μμΌλ©΄ μ νμ΄ κ΅¬ν μ μλ©λλ€. λͺ¨λ ꡬνμ λ€μκ³Ό κ°μ κΈ°λ³Έ μ μλ₯Ό λͺ¨λ νμ©ν΄μΌν©λλ€.
int main() { /* ... */ }
κ³Ό
int main(int argc, char* argv[]) { /* ... */ }
-
ISO 14882 : 2003 3.6.1 μ£Όμ κΈ°λ₯
μ£Όμ κΈ°λ₯μ μ μνκΈ° μν΄ λ 립 νκ²½μ νλ‘κ·Έλ¨μ΄ νμνμ§ μ¬λΆλ ꡬν μ μμ λλ€.
-
ISO 14882 : 2011 3.6.1 μ£Όμ κΈ°λ₯
ꡬνμ΄ μ£Όμ κΈ°λ₯μ 미리 μ μν΄μλ μλ©λλ€. μ΄ κΈ°λ₯μ κ³ΌλΆνλμ§ μμμΌνλ€. int μ νμ λ¦¬ν΄ μ νμ κ°μ ΈμΌνμ§λ§ κ·Έλ μ§ μμΌλ©΄ μ νμ΄ κ΅¬ν μ μλ©λλ€. λͺ¨λ ꡬνμ λ κ°μ§λ₯Ό λͺ¨λ νμ©ν΄μΌνλ€
β intλ₯Ό λ°ννλ () ν¨μ
β intλ₯Ό λ°ννλ (int, charμ λν ν¬μΈν°λ₯Ό κ°λ¦¬ν€λ) ν¨μ
μ£Ό μ νμΌλ‘ (8.3.5).
-
ISO 14882 : 2011 3.6.1 μ£Όμ κΈ°λ₯
μ΄ μΉμ μ μμμ μΈμ© ν C ++ 03κ³Ό λμΌν©λλ€.
λ΅λ³
μ±κ³΅νλ©΄ 0μ, μλ¬λ 0μ΄ μλ κ°μ λ°νν©λλ€. μ΄κ²μ UNIX λ° DOS μ€ν¬λ¦½ν μμ νλ‘κ·Έλ¨μμ λ°μν μΌμ μ°ΎκΈ° μν΄ μ¬μ©νλ νμ€μ λλ€.
λ΅λ³
main()
C89 λ° K & R Cμμ μ§μ λμ§ μμ λ°ν μ νμ κΈ°λ³Έμ μΌλ‘ βint`μ
λλ€.
return 1? return 0?
-
μ return λ¬Έμ μ°μ§ μμΌλ©΄
int main()
λ«κΈ°{
λ κΈ°λ³Έμ μΌλ‘ 0μ λ°νν©λλ€. -
return 0
λλreturn 1
λΆλͺ¨ νλ‘μΈμ€μ μν΄ μμ λ©λλ€. μμμλ μ λ³μλ‘ λ€μ΄κ°κ³ νλ‘κ·Έλ¨μ μ€ννκ³ μμ μ¬μ©νμ§ μκ³ ν΄λΉ λ³μλ₯Ό μ¬μ©νμ§ μμΌλ©΄μ λ°ν κ°μ λν΄ κ±±μ ν νμκ° μμ΅λλ€main()
.
μ£Ό ν¨μκ° λ°ν ν κ²μ μ΄λ»κ² μ»μ μ μμ΅λκΉ?λ₯Ό μ°Έμ‘°νμμμ€ . .
$ ./a.out
$ echo $?
μ΄λ κ² $?
νλ©΄ λ°ν κ°μ μ΅νμ λ°μ΄νΈλ₯Όλ°λ λ³μ λΌλ κ²μ μ μ μμ΅λλ€.main()
.
μ λμ€ λ° DOS μ€ν¬λ¦½ν
return 0
μμ μ±κ³΅μ 0μ΄ μλ μ€λ₯κ° λ°νλ©λλ€. μ΄κ²μ μ λμ€ λ° DOS μ€ν¬λ¦½ν
μμ νλ‘κ·Έλ¨μμ λ°μν μΌμ νμ
νκ³ μ 체 νλ¦μ μ μ΄νλ ββλ° μ¬μ©λλ νμ€μ
λλ€.