-
์์ฝ์ด๋ฅผ defineํด๋ฒ๋ฆฌ๋ฉด ์ด๋ป๊ฒ ๋ ๊นSoliloquy 2020. 8. 23. 02:58
๐ป
๊ณผ๊ฑฐ ์ธํฐ๋ท์์ C์ธ์ด๋ก ๊ฐ๋ฐ์๋ฅผ ๊ดด๋กญํ๋ ๋ฒ์ด๋ผ๋ ๊ธ์ ๋ณด๋ค๊ฐ #define break return 0์ผ๋ก ๊ดด๋กญํ ์ ์๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ์์ฝ์ด break๋ define์ผ๋ก ๋ณ๊ฒฝ์ด ๋ถ๊ฐ๋ฅํ ๊ฒ ๊ฐ์ผ๋ฉด์๋ ๋๋ค๋ ๊ฒ์ ์๊ฒ ๋์๋ค. ํน์๋ ์ถ์ด์ ์๋์ ๊ฐ์ ์ฝ๋๋ฅผ ์ง์ ์จ๋ผ์ธ ์ปดํ์ผ๋ฌ์ ์์ฑ์ ํ ๋ค ์คํ์์ผ ๋ณด์๋ค. ์ ๊ธฐํ๊ฒ๋ ์ ๋ง๋ก ์์ฝ์ด๋ฅผ define์ผ๋ก ์์ ์ํฌ ์ ์์์ ๋ณผ ์ ์์๋ค.
#include <stdio.h> #define break printf("Couldn't escape!\n") int main(void) { int i = 5; while(i){ break; i--; } }
์์ฑํ ์ฝ๋
clang version 7.0.0-3~ubuntu0.18.04.1 (tags/RELEASE_700/final)
>> clang-7 -pthread -lm -o main main.c
>> ./main
Couldn't escape!
Couldn't escape!
Couldn't escape!
Couldn't escape!
Couldn't escape!ํน์ฌ๋ char ๊ฐ์ ๋ฐ์ดํฐ ํ์ ์ ํ๋ ์์ฝ์ด๋ #define์ด ๋๋์ง ๊ถ๊ธํด์ ์๋๋ฅผ ํด๋ดค๋๋ฐ, ์์๋๋ก ์ ๋๋ค. ์๋ง๋ define์ ์ปดํ์ผ์ ํ๊ธฐ ์ ๋ฌธ์๋ฅผ ๋จ์ํ ๊ต์ฒดํด ์ฃผ๋ ํํ๋ก ์๋์ ํด์ ๊ทธ๋ฐ ๊ฒ ๊ฐ๋ค. 2
#include <stdio.h> #define char printf("Char was changed!\n") int main(void) { char; }
char์ ์๋ก์ด define ํด ๋ณด์๋ค. ์คํ ๊ฒฐ๊ณผ๋ "Char was changed!"๊ฐ ์ถ๋ ฅ๋๋ค.
์ต๊ทผ ํ์ด์ฌ์ ๊ดํ ๊ฐ์๋ฅผ ๋ฃ๋ค๊ฐ, ํ์ด์ฌ์ ํด๋์ค์ ์์์ ๊ดํด์ ์๊ฒ ๋์๋ค. ํด๋์ค์ ์์์ ์์ ํด๋์ค์์ super().'๋ถ๋ชจ ํด๋์ค ๋งค์๋๋ช '์ผ๋ก ๋ถ๋ฌ์ฌ ์ ์์๋ค. ๋ฌธ๋ ํด๋์ค๋ฅผ ํธ์ถํ๊ธฐ ์ super() ํจ์๋ฅผ ๋ค๋ฅด๊ฒ define ํด๋ฒ๋ฆฌ๋ฉด ์ด๋ป๊ฒ ๋ ์ง ๊ถ๊ธํ๋ค. 3
์ปดํ์ผ ๋ฐฉ์์ผ๋ก ์๋ํ๋ C์ธ์ด์์๋ ์ ์ฒ๋ฆฌ๊ธฐ ๊ณผ์ ์์ ํด๋น ๋ฌธ์์ด์ด ๋ฐ๋๊ฒ ๋์ด์ ์ด๋ฌํ ๊ฒ๋ค์ด ๊ฐ๋ฅํ๋ค๊ณ ์๊ฐ์ ํ๋๋ฐ, ์ธํฐํ๋ฆฌํฐ ์ธ์ด์ธ ํ์ด์ฌ์์๋ ๊ณผ์ฐ ์ด๋จ๊น? ์ถ์ด์ ์จ๋ผ์ธ ์ปดํ์ผ๋ฌ๋ก ์คํ์์ผ ๋ณด์๋ค. ๊ฒฐ๊ณผ๋ C์ธ์ด์ผ ๋์ ๋์ผํ๋ค. super()๋ฅผ ๋ง์๋๋ก ๋ฐ๊ฟ ์ ์์๋ค.
def super(): print('Super() was changed!') exit() class Country: """Super Class""" def __init__(self): print('Superclass ran success!') class Korea(Country): """Sub Class""" def __init__(self): super().__init__() print('Subclass ran success!') a = Korea()
๋ด๊ฐ ์คํํ ์ฝ๋
Python 3.8.2 (default, Feb 26 2020, 02:56:10)
Super() was changed!
repl process died unexpectedly:์คํ ๊ฒฐ๊ณผ
์ธํฐ๋ท์ ์ฐพ์๋ณด๋ super()์ ํ์ด์ฌ์ ์์ฝ์ด์ ํฌํจ๋์ง ์์๋ค. ํน์๋ ํ์ด์ฌ์ ์์ฝ์ด๋ ํจ์๋ก ์ฌ์ฉ์ด ๋ ์ ์์๊น?๋ผ๋ ์๊ฐ์ ์๋๋ฅผ ํด ๋ณด์๋๋ฐ, ์๋ชป๋ ๊ตฌ๋ฌธ์ด๋ผ๋ ์๋ฌ๊ฐ ๋์๋ค. ํ์ด์ฌ์ ์ผ๋ฐ์ ์ธ ํ๊ฒฝ์์๋ ์ ์ฒ๋ฆฌ๊ธฐ๋ฅผ ์ฌ์ฉํ์ง ์์์ ๊ทธ๋ฐ๊ฐ ๋ณด๋ค.
def break(): global = 1 for a in range(2) : print("test") break
์คํ ์ฝ๋
File "main.py" line 1
def break():
^
SyntaxError: invalid syntax์คํ ๊ฒฐ๊ณผ
์ฌ๋ด
์ธํฐ๋ท์ ์ข ๋ ์ฐพ์๋ณด๋ ์์ง ์คํํด ๋ณด์ง ์์์ง๋ง, ํ์ด์ฌ ๋ชจ๋์ ์ฌ์ฉ/๋ฐฐํฌํ ๋์ ์ ์ฒ๋ฆฌ๊ธฐ ์ต์ ์ ์ฌ์ฉํ ์ ์๋ค๋ ๋ง์ ์ฐพ์๋ค. docs.python.org/2.0/dist/node13.html.
[๋ํ ์ด๋ฏธ์ง]
Image by Christopher Kuszajewski from Pixabay
- repl.it ์จ๋ผ์ธ ์ปดํ์ผ๋ฌ์์ ์คํํ๋ค. [๋ณธ๋ฌธ์ผ๋ก]
- ์ฐธ๊ณ : www.programiz.com/c-programming/c-preprocessor-macros [๋ณธ๋ฌธ์ผ๋ก]
- super()๋ ์์ฝ์ด์ธ ์ค ์์๋๋ฐ, ์์ฝ์ด๊ฐ ์๋์๋ค... ์ฐธ๊ณ : www.programiz.com/python-programming/keyword-list [๋ณธ๋ฌธ์ผ๋ก]