월급 루팡하면서 반복 업무 자동화 하려고 하는데 IT 기업이 아니고 라이선스도 없어서
msvc 빌드 툴 썼다가 책 잡힐까봐 mingw랑 vscode로 빌드하는 거 알아보는데 차이점을 몇 개 좀 느낌
에디터 차이인가 싶긴 한데 char 문자열이 euc-kr이 아니라 utf8로 입력돼서 std::cout << "ㅎㅇ" 같은거 하면 문자열이 깨지고(디버거에선 잘나옴)
wchar_t 문자열은 setlocale만으로 해결이 안됨(알아보는 중).
한글 입력 같은 건 소소한 문제라 별 큰 문제거리는 아닌데 문제는 라이브러리에서 나옴
개인적으로 만든 라이브러리에 empty base optimization 해놓은 건 g++ 컴파일러는 상속받은 함수인지 유추를 못해서 this를 명시해줘야함 ㅅㅂ
지금 작성한 라이브러리에서 ebo 적용해놓은 클래스들 다 수정하는 중임
파이썬 같은 걸 써도 되긴 한데 배운게 도둑질이라고 가능하면 c++을 돌리고 싶은데 쉽지가 않다
해당 댓글은 삭제되었습니다.
cout이 기본적으로 utf8을 지원 안하는데.. multibyte로 변환하면 되긴 하는데 지금 문자열 입출력이 문제가 아니라 지금까지 만들어놓은 라이브러리를 일일이 다 손대야 하는 게 가장 큰 문제임..clang 설치 알아보는중
인코딩은 터미널의 인코딩을 설정하면 될거고 밑에 내용은 첨보네 혹시 코드 짧게 올려볼 수 있나
win32 함수가 char랑 wchar_t로 문자 타입이 나뉘어있어서 GetFileAttributeA GetFileAttributeW 로 나뉘어져 있잖음. 이걸 템플릿으로 하고 싶어서 A함수는 A함수끼리 뭉쳐 넣고 W함수는 W함수끼리 뭉쳐넣은 클래스를 각 하나씩 만들었음.
그리고 템플릿 특수화를 통해서 char 타입 클래스는 A 클래스, wchar_t 클래스는 W 클래스를 상속하도록 하게 했음. 각 클래스는 A, W를 래핑한 FileAttribute를 호출해서 사용함.
이게 msvc에서는 컴파일러가 상속한 걸 알고 있어서 this->를 명시하지 않아도 상속한 클래스의 static string_type FileAttribute를 호출함
근데 clang이랑 g++는 not declared in this scope라고 하면서 에러를 뱉어냄. this->를 안 적으면 오류가 나더라
template class FileFinder : public Wrapper<_Char> { ... }; 이런 방식임
아 static 함수라서 this가 아니라 FileFinder:: 식으로 클래스 함수라는 걸 명시해줘야함
왜 msvc는 되는데 다른 컴파일러들은 안되는지 나도 잘 몰루
this 명시가 표준임 msvc 가 이상한 거
msvc 도 permissive- 옵션 주거나 c++20 옵션주면 this 쓰라고 함 ㅇㅇ 비표준 용납 없음
상속 받은 이상 컴파일 타임에 해당 함수가 존재한다는 걸 알게 되지 않나?? 잘 모르겠는데 신기하네 static 함수라 그런가
좋은거 알아간다 ㄳㄳ
두유노우 chcp?
나도 후자가 궁금타 소스좀;;;
근데 니가 해본게 c++밖에 없다고해도 그냥 안써본 파이썬으로 하는게 몆배로 쉬울걸? 난 별다른 툴들없이 기본적인 파일시스템들로 하는 자동화는 윈도우 네이티브에선 다 노드로 하는편. 맥이나 리눅스면 파이썬이 편한데 윈도우 네이티브에선 파이썬도 좆같은점이 많더라
msvc도 깨짐ㅇㅇ
chcp 숫자 써야함
오 좋은거 알아감 ㄳㄳ