C++언어를 사용하여 개발할 일이 있어서 평소에 java 개발 용으로 쓰던 Eclipse를 C/C++ 컴파일도 가능하게 환경설정을 셋팅해보았다.

install software  http://download.eclipse.org/tools/cdt/releases/9.9

CDT Main Features와 LaunchBar, Uncategorized를 모두 설치해준다. CDT Optional Features는 설치하지 않는다.

모두 설치 후 Eclipse restart.

처음엔 보이는 것 모두 설치를 해서 CDT Builder에러가 났었다. source의 #include <iostream>에 에러가 나기도 하고, Project clean시에 에러가 발생해서 clean도 안되는 상황이었다. 우리나라 사이트에는 mac에 대한 정보가 없어서 해외 사이트를 찾아가며, 정보를 얻었다.

재부팅 후 clean하고 build를 했으나, cannot create pty에러가 발생했다. terminal로 로그를 봤더니. 에러가 자세히 나왔다.

/workspace/.metadata/.log   .파일이나 폴더는 모두 숨김 파일/폴더

또 한 참의 해외 사이트 삽질 후 얻은 결과.

Eclipse Neon 버전을 사용하고 있으면 install software에서 http://download.eclipse.org/tools/cdt/releases/9.3 해당 CDT 버전을 다운 받고 rebuild project해야 함.

그렇게 한 결과 console창에 출력 결과 띄우기 성공. Eclipse로 java는 맥에서 무리없이 돌아갔었는데, C/C++을 컴파일 해보려니 많은 시행착오가 있었다. 그래도 다음에 이런 에러가 난다면 무리없이 헤쳐나갈 수 있는 걸로.

 

'OS > Mac OS' 카테고리의 다른 글

SpringToolSuite4 can't be opened 오류  (0) 2023.03.27
Mac 부하테스트(stress test)  (0) 2020.12.27
MACOS Sieera able to Unidentified Apps  (0) 2018.01.22
Oralcle DB 설치  (0) 2017.09.05
Beyond Compare - 디데이 초기화 프로그램  (0) 2017.08.07
Posted by 知彼知己百戰不殆
,
public class Main {
	public static void main(String[] args) {
		System.out.println("=================생성자테스트=================");
        Child c1 = new Child();
        Child c2 = new Child("1");
        
        System.out.println("====================생성자테스트2=================");
        Parent p1 = new Child();
        Parent p2 = new Child("2");
        
        System.out.println("====================생성자테스트3=================");
        GrandParents gp1 = new Child();
        GrandParents gp2 = new Child("3");
        
        System.out.println("=================상속 중복 정의 테스트==================");
        
        Child c3 = new Child();
        System.out.println("c3 str = " + c3.pStr);
        
        Child c4 = new Child("4");
        System.out.println("c4 str = " + c4.pStr);
        
        Parent p3 = new Child();
        System.out.println("p3 str = " + p3.pStr);

        Parent p4 = new Child("5");
        System.out.println("p4 str = " + p4.pStr);
        
        GrandParents g1 = new Child();
        System.out.println("g1 str = " + g1.pStr);

        GrandParents g2 = new Child("6");
        System.out.println("g2 str = " + g2.pStr);
        
        GrandParents g3 = new Parent();
        System.out.println("g3 str = " + g3.pStr);

        GrandParents g4 = new Parent("7");
        System.out.println("g4 str = " + g4.pStr);

        GrandParents g5 = new GrandParents();
        System.out.println("g5 str = " + g5.pStr);

        GrandParents g6 = new GrandParents("8");
        System.out.println("g6 str = " + g6.pStr);
	}
}

class GrandParents {
    String pStr = "grand parents";
    
    GrandParents() {
        System.out.println("GrandParents()");
    }
    GrandParents(String str) {
        System.out.println("GrandParents str생성자");
    }
}
 
class Parent extends GrandParents {
    String pStr = "parents";
    
    Parent(){
        System.out.println("Parent 생성자");
    }
    Parent(String str){
        System.out.println("Parent str생성자");
    }
}
 
class Child extends Parent{
    String pStr = "child";
    
    Child(){
        System.out.println("Child 생성자");
    }
    Child(String str){
        System.out.println("Child str생성자");
    }
}

 

생성자와 변수 데이터는 메소드 오버라이딩과 결과가 조금 달랐다.

메소드 오버라이딩은 자식 클래스에 오버라이딩이 돼 있으면 부모 클래스에서 같은 메소드명을 호출해도 자식 클래스의 메소드를 우선 호출했다. 하지만 생성자와 변수 데이터는 변수 타입을 많이 따라간다는 생각이 들었다.

Posted by 知彼知己百戰不殆
,

 

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
        String int_rate = "2.2596";
        
        System.out.println("[D] int_rate = " + int_rate);
        
        System.out.println("[D] String double Round1 = " + Double.parseDouble(int_rate)*1000);
        System.out.println("[D] String double Round2 = " + Double.parseDouble(int_rate)*1000/1000.0);
        System.out.println("[D] String double Round3 = " + Math.round(Double.parseDouble(int_rate)*1000/1000.0));
        System.out.println("[D] String double Round4 = " + String.format("%.2f" , Float.parseFloat(int_rate)) );
 
        
        System.out.println("[D] String double Round5 = " + Double.parseDouble(int_rate)*1000/1000.0);
        System.out.println("[D] String double Round6 = " + Math.round(Double.parseDouble(int_rate)*1000/1000.0));
        System.out.println("[D] String double Round7 = " + Double.toString(Math.round(Double.parseDouble(int_rate)*1000/1000.0)));
        
        
        Double add_rate = 3.141592;
        add_rate = Math.round(add_rate*1000)/1000.0;
        System.out.println("[D] String double Round9 = " + add_rate);
cs

소스 결과

 

String.format을 사용할 때 

String.format("%.2f" + Float.parseFloat(~~); 이렇게도 사용하니 

Exception in thread "main" java.util.MissingFormatArgumentException: Format specifier '%.2f' 라는 에러가 나왔다.

파라미터를 찾을 수 없다는 에러. 그래서 ","로 수정하니 잘 됨.

 

12,13번 line은 double형을 바로 round함수에 넣으면 제대로 출력이 되는데, String을 parseDouble로 변환하고 다시 String으로 변환하니 값이 짤려서 나온다. 실수값이 들어가 있는 String변수는 StringFormat을 써야함!!

Posted by 知彼知己百戰不殆
,