질문 게시판 / Q&A

전역변수명 select ??

by holymoly, 10월 15일, 15:52

이유를 알 수 없는 컴파일 에러가 자꾸 나길래 ideone.com 같은 사이트 7군데 정도 에서 코드를 돌려보았습니다
모두 제가 사용한 전역변수에 int select가 있는게 원인이었는데요
찾아보니까 linux os에는 select라는 이름의 다중입출력함수? 가 내장되어 있는 것 같더라구요 맞나요??
그래서 생각해보면 제 pc는 윈도우 기반 gcc라서 컴파일이 잘 된거같고,
웹 컴파일러들은 모두 리눅스기반 gcc를 사용해서 컴파일 하는것 같은데
그럼 앞으로 파일은 제출할 때 select라는 변수명을 전역변수로 사용할 방법은 없는건가요?

첨부파일은 정말 간단한 예시를 돌려본겁니다!

holymoly , 10월 15일, 23:06
 답변 모두 감사합니다!
select가 위험한 변수명이라는걸 하나 알았네요 ㅎㅎ

그리고 코드블럭은 20.03 minGW버전에 GNU GCC compiler이고 flag는 C++14 ISO만 사용했습니다! 
prof , 10월 15일, 18:13
 사진 파일 이름에 "한글"이 있으면 오류가 납니다. 지금 조교 선생님이 수정 중이니
조금만 기다려 주세요.

에... g++ 컴파일러의 version에 따라서 다른 것 같네요. 일단 version을
정확하게 확인해보세요.

그러나 저러나, 일단 위험한 이름은 아예 안쓰는 것이 제일 좋습니다.

int new ;

불안하죠 ?

int begin, end, if ;

개인적으로는 첫문자를 대문자로 쓰거나
아니면 local일 경우 my_를 붙입니다.

my_select ;

일단 우리가 만든 프로그램이 어떤 compile 횐경에서
돌아갈지 모르기 때문에 처음부터  방어적("defensive")으로
만드는 것이 좋습니다.

다음에 동영상 강의에서 defensive programming에 대해서
한번 이야기해보겠습니다.

조심, 조심..
확인, 확인...

아주 좋은 내용을 잘 질문했습니다. (이런 의견 좋아요 ! ) 
assist , 10월 15일, 18:12
 UNIX의 sys/select.h의 내장 함수 select 충돌이 맞습니다. ideone에서 미리 확인해보실 수 있고, 만약 코드 블럭을 minGW 버전으로 받으셨다면 아마 거기서도 에러가 나셨을 것으로 생각됩니다.  

그리고 현재 첨부파일명이 한글 포함되면 에러가 납니다. 
kmiiiaa , 10월 15일, 16:27
 변수 호출할때 ::붙여서 전역 네임스페이스로 사용하세요 
holymoly , 10월 15일, 15:53
 504 서버에러가 나면서 2개가 올라가지네요
사진을 첨부해서 그런가요?