๋ณธ๋ฌธ ๋ฐ”๋กœ๊ฐ€๊ธฐ

์ „์ฒด๋ณด๊ธฐ114

[C/C++] 7. ๊ฐœ๋ฐœํ™˜๊ฒฝ ๊ตฌ์„ฑ(windows/linux) C/C++์€ ์ปดํŒŒ์ผ ์–ธ์–ด์ด๋ฉด์„œ ํ”Œ๋žซํผ ์ข…์†์ ์ธ ํŠน์„ฑ์„ ๊ฐ–๊ณ  ์žˆ๋‹ค. ๋‹ค์‹œ ๋งํ•˜๋ฉด ํ”Œ๋žซํผ์— ์ข…์†๋˜์–ด ์žˆ๊ธฐ ๋•Œ๋ฌธ์— ์ปดํŒŒ์ผํ•ด์„œ ์–ป์€ ์‹คํ–‰ํŒŒ์ผ์ด ๋งŒ์•ฝ ํ”Œ๋žซํผ์ด ๋‹ค๋ฅด๋‹ค๋ฉด ์‹คํ–‰ํ•  ์ˆ˜ ์—†๋‹ค. ๋Œ€ํ‘œ์ ์ธ ํ”Œ๋žซํผ์ธ ์œˆ๋„์šฐ์™€ ๋ฆฌ๋ˆ…์Šค์—์„œ ๊ฐ๊ฐ ๊ฐœ๋ฐœ ํ™˜๊ฒฝ ๊ตฌ์„ฑ์„ ์–ด๋–ป๊ฒŒ ํ•˜๋Š”์ง€ ์‚ดํŽด๋ณด์ž. โœ… windows ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ๋Š” Visual Studio๊ฐ€ 90% ์ด์ƒ์˜ ์ ์œ ์œจ์„ ๋ณด์ธ๋‹ค. ์œˆ๋„์šฐ ์šด์˜์ฒด์ œ์ด๊ธฐ ๋•Œ๋ฌธ์— MS๊ฐ€ ๋งŒ๋“  VS์™€ ํ˜ธํ™˜์ด ์ž˜ ๋˜๊ณ , MSVC ์ปดํŒŒ์ผ๋Ÿฌ๋ฅผ ์ž์ฒด์ ์œผ๋กœ ๋‚ด์žฅํ•˜๊ณ  ์žˆ๊ธฐ ๋•Œ๋ฌธ์— VS๋งŒ ์„ค์น˜ํ•ด๋„ ๋ณ„๋‹ค๋ฅธ ์ถ”๊ฐ€๋„๊ตฌ๊ฐ€ ํ•„์š” ์—†๋‹ค. ์ปดํŒŒ์ผ, ์‹คํ–‰, ๋ถ„์„๊นŒ์ง€ ํ•œ IDE์—์„œ ์ด๋ฃจ์–ด์ง€๊ธฐ ๋•Œ๋ฌธ์— ํŽธ๋ฆฌํ•˜๋‹ค. ๋‹ค๋งŒ ๋งŽ์€ ๊ธฐ๋Šฅ์ด ์žˆ๋Š” ๋งŒํผ ์„ค์น˜ ์šฉ๋Ÿ‰์ด ํฌ๊ณ  ๋ฌด๊ฒ๋‹ค. ํ˜„์žฌ๋Š” Visual Studio 2022๊นŒ์ง€ ๋‚˜์™€์žˆ๋‹ค. ์„ค์น˜๋Š” ์•„๋ž˜ .. 2023. 4. 11.
Makefile ๊ธฐ์ดˆ โœ… ๊ธฐ๋ณธ makefile ์—†์ด ๊ธฐ๋ณธ์ ์œผ๋กœ ์ปดํŒŒ์ผ ํ•˜๊ฒŒ ๋ ๋•Œ๋Š” gcc/g++๋กœ ์ปดํŒŒ์ผํ•œ๋‹ค. gcc -c main.c usa.c kor.c gcc -o app.out main.o usa.o kor.o ์—ฌ๊ธฐ์„œ ๋˜‘๋˜‘ํ•œ ์ปดํŒŒ์ผ๋Ÿฌ์™€ ๋ฆฌ๋ˆ…์Šค๋Š” gcc -o app.out main.c usa.c kor.c ๋ฅผ ํ†ตํ•ด ์œ„ ๋‘๊ณผ์ •์„ ํ•œ๋ฒˆ์— ์ฒ˜๋ฆฌํ•  ์ˆ˜ ์žˆ๋‹ค. โœ… Makefile ๋งŒ๋“ค๊ธฐ TARGET : DEPENDENCY command TARGET์„ ๋งŒ๋“ค๊ธฐ ์œ„ํ•ด์„œ๋Š” DEPENDENCY๊ฐ€ ํ•„์š”ํ•˜๋‹ค. command ๋ช…๋ น์„ ํ†ตํ•ด TARGET์„ ๋งŒ๋“ ๋‹ค. โœ”๏ธ ex1) ๊ธฐ๋ณธ์ ์ธ Makefile ์ฒซ ๊ตฌ์„ฑ (main.c kor.c usa.c → app.out) app.out : main.o kor.o usa.o gcc -o app.out m.. 2023. 4. 11.
์ถ”์ƒ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด(Abstract Singleton) ์ถ”์ƒ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์€ ์ถ”์ƒํ™” ๋˜์–ด ์žˆ๋Š” ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ƒ์†๋ฐ›์•„์„œ, ์‚ฌ์šฉํ•˜๋Š” ํŒจํ„ด์ž…๋‹ˆ๋‹ค. ๋งŒ์•ฝ ์‹ฑ๊ธ€ํ†ค์œผ๋กœ ๋ณ€๊ฒฝํ•ด์•ผ ํ•˜๋Š” ํด๋ž˜์Šค๊ฐ€ 5๊ฐœ๋ผ๋ฉด, 5๊ฐœ ๋ชจ๋‘ ์‹ฑ๊ธ€ํ†ค ํŒจํ„ด์„ ์ ์šฉํ•˜๊ธฐ ๋ณด๋‹จ ์ƒ์†๊ณผ ํ…œํ”Œ๋ฆฟ์„ ์ด์šฉํ•ด์„œ ์ถ”์ƒํ™”๋œ ์‹ฑ๊ธ€ํ†ค์„ ๊ตฌํ˜„ํ•ฉ๋‹ˆ๋‹ค. ๋งค์šฐ ๊ฐ„๋‹จํ•˜๋‹ˆ๊นŒ ๋”ฐ๋ผํ•ด๋ณด์„ธ์š” :) 1. ์ƒ์† ๋ฐ›์„ ์ถ”์ƒํ™” ํด๋ž˜์Šค๋ฅผ ํ…œํ”Œ๋ฆฟ์œผ๋กœ ๊ตฌํ˜„. class SingletonTemplate { public: T* GetInstance() { if ( m_instance == nullptr ) { m_instance = new T(); } return m_instance; } private: SingletonTemplate(); static T* m_instance; } Lasy create๋กœ ๊ตฌํ˜„ํ•ด๋ดค์Šต๋‹ˆ๋‹ค. GetInstance๊ฐ€ ์ฒ˜์Œ ํ˜ธ.. 2023. 3. 20.
vcpkg๋ฅผ ์“ฐ์ž ํ•ญ์ƒ C/C++ ๊ฐœ๋ฐœ์ž๋“ค์€ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋กœ ์ธํ•ด ๊ณ ํ†ต๋ฐ›์Šต๋‹ˆ๋‹ค. ํ”Œ๋žซํผ ์ข…์†์ ์ด๋ฉด์„œ ๋ฌด๊ตฌํ•œ ์—ญ์‚ฌ๋ฅผ ๊ฐ€์ง„ ์–ธ์–ด์ด๊ธฐ ๋•Œ๋ฌธ์— ๋น„๊ต์  ์ตœ๊ทผ์— ๋‚˜์˜จ ์–ธ์–ด์™€ ๋‹ฌ๋ฆฌ ์„œ๋“œํŒŒํ‹ฐ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ๋ฅผ ์ ์šฉํ•˜๊ธฐ๊ฐ€ ๊นŒ๋‹ค๋กœ์› ์ฃ . node์ง„์˜์˜ npm๊นŒ์ง€๋Š” ์•„๋‹ˆ์ง€๋งŒ C/C++์ง„์˜์—์„œ๋„ MS๊ฐ€ ๋งŒ๋“  vcpkg๋ฅผ ์“ฐ๋Š”๊ฒŒ ๊ทธ๋‚˜๋งˆ ํƒˆ๋ชจ์˜ ์†๋„๋ฅผ ๋Šฆ์ถฐ์ค„ ๊ฒƒ์ž…๋‹ˆ๋‹ค. vcpkg์˜ ๊ณต์‹ ํ™ˆํŽ˜์ด์ง€๋Š” ๋‹ค์Œ๊ณผ ๊ฐ™์Šต๋‹ˆ๋‹ค. https://vcpkg.io/en/index.html vcpkg - Open source C/C++ dependency manager from Microsoft Easy To Use Download and build popular libraries in a single step. Never worry about upstream dependenc.. 2023. 3. 19.
std::thread์™€ std::async โœ… ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ vs ๊ณผ์ œ ๊ธฐ๋ฐ˜ ์ ‘๊ทผ work๋ผ๋Š” ํ•จ์ˆ˜๋ฅผ ๋น„๋™๊ธฐ์ ์œผ๋กœ ์‹คํ–‰ํ•˜๋Š” ๋ฐฉ๋ฒ•์€ ๋‘ ๊ฐ€์ง€ ์ž…๋‹ˆ๋‹ค. ํ•˜๋‚˜๋Š” std::thread ๊ฐ์ฒด๋ฅผ ์ƒ์„ฑํ•ด์„œ ๊ทธ ๊ฐ์ฒด์—์„œ work๋ฅผ ์‹คํ–‰ํ•˜๋Š” ๊ฒƒ์ด๊ณ , ์ด๋Š” ์Šค๋ ˆ๋“œ ๊ธฐ๋ฐ˜(thread-based) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. ๋˜ ํ•˜๋‚˜๋Š” work๋ฅผ std::async์— ๋„˜๊ฒจ์ฃผ๋Š” ๊ฒƒ์ด๊ณ  ์ด๋Š” ๊ณผ์ œ ๊ธฐ๋ฐ˜(task-based) ํ”„๋กœ๊ทธ๋ž˜๋ฐ์— ํ•ด๋‹นํ•ฉ๋‹ˆ๋‹ค. int work(); std::thread t(work); auto f = std::async(work); ์œ„ ์ฝ”๋“œ๋ฅผ ์ง๊ด€์ ์œผ๋กœ ๋ณด์•˜์„ ๋•Œ, async๋ฅผ ์“ฐ๋ฉด work์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์ด ๋ณด์ž…๋‹ˆ๋‹ค.(std::get์„ ํ†ตํ•ด ์–ป์„ ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค)(thread๋Š” ํ•จ์ˆ˜์˜ ๋ฐ˜ํ™˜ ๊ฐ’์„ ์–ป์„ ์ˆ˜ ์—†์Šต๋‹ˆ๋‹ค.) ์ด๊ฒƒ ๋ฟ๋งŒ ์•„๋‹ˆ๋ผ .. 2023. 1. 14.
[std] iterator๋ณด๋‹จ const_iterator ! ๊ฐ€๋Šฅํ•œ ํ•œ ํ•ญ์ƒ const๋ฅผ ์‚ฌ์šฉํ•˜๋ผ๋Š” ํ‘œ์ค€ ๊ด€ํ–‰์€ ๋ฐ˜๋ณต์ž์—๊ฒŒ๋„ ์ ์šฉ๋ฉ๋‹ˆ๋‹ค. ๋ฐ˜๋ณต์ž๊ฐ€ ๊ฐ€๋ฆฌํ‚ค๋Š” ๊ฒƒ์„ ์ˆ˜์ •ํ•  ํ•„์š”๊ฐ€ ์—†์„ ๋•Œ๋Š” ํ•ญ์ƒ const_iterator๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์ข‹์Šต๋‹ˆ๋‹ค. std::vector data; auto itr = std::find(data.cbegin(), data.cend(), 5);// cbegin, cend์‚ฌ์šฉ if (itr == data.cend()) data.push_back(5); 2023. 1. 14.