Inlinec - Python ์Šคํฌ๋ฆฝํŠธ์—์„œ C ์ฝ”๋“œ๋ฅผ ์‚ฌ์šฉํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•

ํ”„๋กœ์ ํŠธ ์ธ๋ผ์ธ C ์ฝ”๋“œ๋ฅผ Python ์Šคํฌ๋ฆฝํŠธ์— ์ธ๋ผ์ธ ํ†ตํ•ฉํ•˜๋Š” ์ƒˆ๋กœ์šด ๋ฐฉ๋ฒ•์ด ์ œ์•ˆ๋˜์—ˆ์Šต๋‹ˆ๋‹ค. C ํ•จ์ˆ˜๋Š” "@inlinec" ๋ฐ์ฝ”๋ ˆ์ดํ„ฐ๋กœ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ ๋™์ผํ•œ Python ์ฝ”๋“œ ํŒŒ์ผ์—์„œ ์ง์ ‘ ์ •์˜๋ฉ๋‹ˆ๋‹ค. ์š”์•ฝ ์Šคํฌ๋ฆฝํŠธ๋Š” Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ์— ์˜ํ•ด ์žˆ๋Š” ๊ทธ๋Œ€๋กœ ์‹คํ–‰๋˜๊ณ  Python์—์„œ ์ œ๊ณต๋˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ตฌ๋ฌธ ๋ถ„์„๋ฉ๋‹ˆ๋‹ค. ์ฝ”๋ฑ, ์ด๋ฅผ ํ†ตํ•ด ์ธํ„ฐํ”„๋ฆฌํ„ฐ๊ฐ€ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๊ตฌ๋ฌธ ๋ถ„์„ํ•˜๊ธฐ ์ „์— ํŒŒ์„œ๋ฅผ ์—ฐ๊ฒฐํ•˜์—ฌ ์Šคํฌ๋ฆฝํŠธ๋ฅผ ๋ณ€ํ™˜ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค(์ผ๋ฐ˜์ ์œผ๋กœ ์ฝ”๋ฑ ๋ชจ๋“ˆ์€ ํˆฌ๋ช…ํ•œ ํ…์ŠคํŠธ ํŠธ๋žœ์Šค์ฝ”๋”ฉ์— ์‚ฌ์šฉ๋˜์ง€๋งŒ ์Šคํฌ๋ฆฝํŠธ์˜ ๋‚ด์šฉ์„ ์ž„์˜๋กœ ๋ณ€ํ™˜ํ•  ์ˆ˜๋„ ์žˆ์Šต๋‹ˆ๋‹ค).

ํŒŒ์„œ๋Š” ์ดˆ๊ธฐ ์ฒ˜๋ฆฌ๋ฅผ ์ˆ˜ํ–‰ํ•˜๊ณ  @inlinec ์ฃผ์„์„ ์‚ฌ์šฉํ•˜์—ฌ ๊ฐ•์กฐ ํ‘œ์‹œ๋œ C ํ•จ์ˆ˜์˜ ์ •์˜๋ฅผ ctypes ๋ฐ”์ธ๋”ฉ์œผ๋กœ ์ฆ‰์‹œ ๋ณ€ํ™˜ํ•˜๊ณ  C ํ•จ์ˆ˜์˜ ๋ณธ๋ฌธ์„ ๋‹ค์Œ์œผ๋กœ ๋ฐ”๊พธ๋Š” ๋ชจ๋“ˆ("from inlinec import inlinec")๋กœ ์—ฐ๊ฒฐ๋ฉ๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ฐ”์ธ๋”ฉ์— ๋Œ€ํ•œ ํ˜ธ์ถœ์ž…๋‹ˆ๋‹ค. ์ด๋Ÿฌํ•œ ๋ณ€ํ™˜ ํ›„ Python ์ธํ„ฐํ”„๋ฆฌํ„ฐ๋Š” ์Šคํฌ๋ฆฝํŠธ์˜ ์˜ฌ๋ฐ”๋ฅด๊ฒŒ ๋ณ€ํ™˜๋œ ์†Œ์Šค ํ…์ŠคํŠธ๋ฅผ ์ˆ˜์‹ ํ•˜๋ฉฐ, ์—ฌ๊ธฐ์„œ C ํ•จ์ˆ˜๋Š” ๋‹ค์Œ์„ ์‚ฌ์šฉํ•˜์—ฌ ํ˜ธ์ถœ๋ฉ๋‹ˆ๋‹ค. ์œ ํ˜•. ๋น„์Šทํ•œ ๋ฐฉ๋ฒ•์ด ํ”„๋กœ์ ํŠธ์—์„œ๋„ ์‚ฌ์šฉ๋ฉ๋‹ˆ๋‹ค. Pyxl4, HTML๊ณผ Python ์ฝ”๋“œ๋ฅผ ํ•˜๋‚˜์˜ ํŒŒ์ผ์— ํ˜ผํ•ฉํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

# ์ฝ”๋”ฉ: ์ธ๋ผ์ธ
inlinec์—์„œ inlinec ๊ฐ€์ ธ์˜ค๊ธฐ

@inlinec
๋ฐํ”„ ํ…Œ์ŠคํŠธ():
#ํฌํ•จ
๋ฌดํšจ ํ…Œ์ŠคํŠธ() {
printf("์•ˆ๋…•ํ•˜์„ธ์š”, ์„ธ์ƒ");
}

๊ฐœ๋ฐœ์€ ์ง€๊ธˆ๊นŒ์ง€ ์‹คํ—˜์ ์ธ ํ”„๋กœํ† ํƒ€์ž…์œผ๋กœ ์ œ์‹œ๋˜์—ˆ์œผ๋ฉฐ, ์—ฌ๊ธฐ์—๋Š” ํ•จ์ˆ˜์— ๋Œ€ํ•œ ํฌ์ธํ„ฐ(๋ฌธ์ž์—ด ์ œ์™ธ) ์ „๋‹ฌ์— ๋Œ€ํ•œ ์ง€์› ๋ถ€์กฑ, ์‹คํ–‰ ํ•„์š”์„ฑ ๋“ฑ์˜ ๋‹จ์ ์ด ํฌํ•จ๋˜์–ด ์žˆ์Šต๋‹ˆ๋‹ค.
์ฝ”๋“œ ์ „์ฒ˜๋ฆฌ๋ฅผ ์œ„ํ•œ "gcc -E", ์ค‘๊ฐ„ *.so, *.o ๋ฐ *.c ํŒŒ์ผ์„ ํ˜„์žฌ ๋””๋ ‰ํ„ฐ๋ฆฌ์— ์ €์žฅํ•˜๊ณ , ๋ณ€ํ™˜๋œ ๋ฒ„์ „์„ ์บ์‹œํ•˜์ง€ ์•Š๊ณ , ๋ถˆํ•„์š”ํ•œ ๊ตฌ๋ฌธ ๋ถ„์„ ๋‹จ๊ณ„๋ฅผ ์ˆ˜ํ–‰ํ•ฉ๋‹ˆ๋‹ค(์‹คํ–‰ํ•  ๋•Œ๋งˆ๋‹ค ๊ธด ์ง€์—ฐ).

์ถœ์ฒ˜ : opennet.ru

์ฝ”๋ฉ˜ํŠธ๋ฅผ ์ถ”๊ฐ€