μ€λμ μνΈλ¦¬ ν¬μΈνΈ(Entry point)μ λν΄μ μ΄μΌκΈ°ν΄λ³΄λ €κ³ ν©λλ€. μνΈλ¦¬ ν¬μΈνΈλΌκ³ νλ©΄ μ’ κ±°μ°½ν λλμΈλ°, μ¬μ€ λ³ κ±° μμ΅λλ€.
μ΄μ ν¬μ€ν μ€ μ»΄νμΌλ¬μ μ€ννμΌμ λν΄μ λ§μλλ Έμ΅λλ€. μ°λ¦¬κ° C/C++λ‘ μ§ μμ€μ½λλ₯Ό μ€νν λ νμ mainν¨μμμ μμν©λλ€. μ¬λ¬ νμΌμ μλ§μ ν¨μκ° μλλΌλ μμμ νμ mainν¨μλΆν° μμνκΈ° λλ¬Έμ, μμ ꡬ문μ mainμμ μ€νν΄μΌ ν©λλ€.
// C
#include <stdio.h>
int main()
{
printf("Hello world");
return 0;
}
μ μμ μ κ°μ΄ κ°λ¨ν μ½λλ₯Ό λ§λ€λλΌλ mainν¨μμμ λμνλ κ²μ λ³Ό μ μμ΅λλ€.
// C++
#include <iostream>
int main()
{
std::cout << "μ«μλ₯Ό μ
λ ₯νμΈμ:" << std::endl;
int num = 0;
std::cin >> num;
std::cout << "μ
λ ₯ν μ«μλ " << num << "μ
λλ€." << std::endl;
return 0;
}
νλ‘κ·Έλ¨ μ€ν μ€μ μ¬μ©μμκ² μ λ ₯λ°μμΌ ν μν©μ΄ μκΈ°λ©΄ standard inputꡬ문μ ν΅ν΄μ μ λ ₯κ°μ λ°μ μ μμ΅λλ€.(Cμμλ scanf/scanf_s, C++μμλ cin)
λ§μ½ νλ‘κ·Έλ¨ μμμ λ°μμΌ ν μΈμκ° νμ 10κ° μ΄μ νΉμ 50κ° μ΄μμ΄λΌκ³ κ°μ νλ©΄, μΈμ κ°μλ§νΌ μ λ ₯λ°λ μ½λλ μμ±ν΄μΌ νκ³ μ€νν λλ§λ€ κ°μλ§νΌ μ λ ₯ν΄μ€μΌ ν κ²λλ€. ν루μ νλ‘κ·Έλ¨μ 10λ²λ§ μ€νν΄λ μ λ ₯κ°μ 100κ° 500κ° μ λ ₯νλ λ²κ±°λ‘μμ΄ μμ΅λλ€.
κ°μ λ°©λ²μΌλ‘ μ λ μΈμλ€μ λͺ¨μλμ νμΌμ λ§λ€κ³ κ·Έ νμΌμ μ λ ₯κ°μΌλ‘ λ°μλ³΄κ² μ΅λλ€.
// C++
#include <iostream>
#include <string>
int main()
{
std::cout << "κ²½λ‘λ₯Ό μ
λ ₯νμΈμ:" << std::endl;
// νμΌ κ²½λ‘ μ
λ ₯
std::path;
std::cin >> path;
std::cout << "μ
λ ₯ν κ²½λ‘λ " << path << "μ
λλ€." << std::endl;
// νμΌ μ½κΈ° μμ
FILE* fd = fopen(path.c_str(), "r");
...
return 0;
}
μμ κ°μ΄ νμΌ κ²½λ‘λ₯Ό μ λ ₯λ°μμ μμκ°μ μΈμλ₯Ό νλμ μΈμλ‘ μ λ ₯λ°μμ μ²λ¦¬ν μ μμ΅λλ€.
νμ§λ§ μ λ°©λ²λ μ€νν λλ§λ€ κ²½λ‘λ₯Ό μ λ ₯ν΄μ£Όμ΄μΌ νκΈ° λλ¬Έμ μμ ν κ°μ λλ€κ³ λ ν μ μμ΅λλ€. μ λ ₯κ°μ λ°μ§ μκ³ νλ‘κ·Έλ¨ μμμ μΈμλ₯Ό λ°μ μ μλ λ°©λ²μ΄ μμκΉμ?
μ¬κΈ°μ μνΈλ¦¬ ν¬μΈνΈ(Entry point)κ° λμ΅λλ€.
// C
#include <stdio.h>
int main(int argc, char* argv[])
{
printf("μΈμμ κ°μλ: %dκ° μ
λλ€."\n);
for ( int i = 0; i < argc; i++ )
{
printf("μΈμ %d: %s\n", i+1, argv[i]);
}
return 0;
}
μ¬κΈ°μ argcλ μ λ ₯λ°μ μΈμμ κ°μ(argument count), argvλ μ λ ₯λ°μ μΈμμ λ°°μ΄(argument vector)μ λνλ λλ€. μ λ ₯λ°μ μΈμκ°μ λ¬Έμμ΄ ννλ‘ λ°κΈ° λλ¬Έμ λ°μμ¨ κ°μ μ μ νκ² μ²λ¦¬ν νμκ° μμ΅λλ€.
mainμ 맀κ°λ³μμΈ int argc, char* argv[]λ κ³ μ λ ννμ΄λ―λ‘ μμλ‘ λ°κΎΈλ©΄ λμνμ§ μμ΅λλ€.
main.exe hello world g-stack
μ€νμ μμ κ°μ΄ μ λ ₯κ°μ μ€λ€λ©΄ μΆλ ₯ κ°μ λ€μκ³Ό κ°μ΄ λμ΅λλ€.
μΈμμ κ°μλ 4κ° μ λλ€.
μΈμ 1: ./main.exe
μΈμ 2: hello
μΈμ 3: world
μΈμ 4: g-stack
μ¬κΈ°μ μμλ¬μΌ ν κ²μ 첫 λ²μ§Έ μΈμ(argv[0])λ νμ μ€ννμΌμ μ΄λ¦μ΄ λ€μ΄μ΅λλ€. κ·Έλμ μ€μ λ‘ λ΄κ° λ£μ 첫 λ²μ§Έ μΈμλ argv[1]λ‘ κ°μ ΈμμΌ ν©λλ€.
μκΉμ μν©μΌλ‘ λμμμ νμΌ κ²½λ‘λ₯Ό mainμ μΈμλ‘ μ λ¬ν΄λ³΄κ² μ΅λλ€.
// C
#include <stdio.h>
int main(int argc, char* argv[])
{
if ( argc > 2 )
printf("μΈμλ νλλ§ μ
λ ₯ν΄μ£ΌμΈμ\n");
char* path = argv[1];
// νμΌ μ½κΈ° μμ
FILE* fd = fopen(path, "w");
...
return 0;
}
argcλ μ€ννμΌ μ΄λ¦μ ν¬ν¨ν΄μ 2κ°κΉμ§λ§ νμ©νλ μμΈμ²λ¦¬λ₯Ό λ¨Όμ νμ΅λλ€. κ·Έλ¦¬κ³ μ λ ₯λ°μ κ²½λ‘λ₯Ό ν΅ν΄μ νμΌμ μ½μ΄μ μ€μ νμν μΈμλ₯Ό μμ λ‘κ² κ°μ Έμ¬ μ μκ² λμμ΅λλ€.
μ μν© λ§κ³ λ μνΈλ¦¬ν¬μΈνΈλ₯Ό νμ©νλ λ°©λ²μ λ§μ΅λλ€. νλ‘κ·Έλ¨ μμμ μ€νλλ mainν¨μμ μΈμλ₯Ό μ£Όκ³ μΆλ€λ©΄ μνΈλ¦¬ν¬μΈνΈλ₯Ό κΈ°μ΅νμκΈΈ λ°λλλ€.
'C++ κΈ°μ΄' μΉ΄ν κ³ λ¦¬μ λ€λ₯Έ κΈ
[C/C++] 7. κ°λ°νκ²½ ꡬμ±(windows/linux) (1) | 2023.04.11 |
---|---|
Makefile κΈ°μ΄ (0) | 2023.04.11 |
[C/C++] 5. λ°λ³΅λ¬Έ(Iteration statements) - whileλ¬Έ(while loop) (0) | 2021.04.03 |
[C/C++] 4. λ°λ³΅λ¬Έ(Iteration statements) - forλ¬Έ(for loop) (0) | 2021.03.29 |
[C/C++] 3. 쑰건문(Conditional statement) (0) | 2021.03.18 |
λκΈ