2013-10-03 2 views
1

패키지의 실제 이름과 다른 이름을 사용할 수 있습니까? 나는 아래의 프라그 마를 사용하지만Ada 패키지의 이름 바꾸기

package Parent_With_Very_Long_Name is end Parent_with_Very_Long_Name; 
... 
package Parent_With_Very_Long_Name.Child is 
    pragma Source_File_Name_Project("parent-child.ads"); 
end Parent_With_Very_Long_Name.Child; 
"프라 그마 source_file_name_project 인수가 잘못된 식별자가"와 같은
+0

두 링크 모두'Source_File_Name_Project'를 사용하지 말라고 알려줍니다. 그것은 말했습니다 -'Source_File_Name'이 작동한다고 확신하지만, 우리가 당신을 도울 것을 원한다면 ** 실제로 작성한 내용과 작성한 파일을 보여 주어야합니다 ** 그리고, 실제 오류 메시지 알았어. –

답변

3

에이다 소스 텍스트의 실제의 기억은 기술적으로 인 오류를 얻기 위해 노력했다 컴파일러의 구현 세부 사항.

컴파일러가 예상하는 파일 이름을 보면 GNAT (GCC-Ada)를 사용하고 있다고 생각합니다. 그래서 컴파일러가 불평하는 이유는 당신이 잘못된 구문을 사용한 적이 있다는 것입니다

project Short_File_Names is 
    package Naming is 
     for Specification ("Parent_With_Very_Long_Name.Child") 
     use "parent-child.ads"; 
    end Naming; 
end Short_File_Names; 
3

pragma Source_File_Name에 대한 문서는 구문이

pragma Source_File_Name (
    [Unit_Name =>] unit_NAME, 
    Spec_File_Name => STRING_LITERAL, 
    [Index => INTEGER_LITERAL]); 

pragma Source_File_Name (
    [Unit_Name =>] unit_NAME, 
    Body_File_Name => STRING_LITERAL, 
    [Index => INTEGER_LITERAL]); 

말한다 : GNAT는 프로젝트 파일의 기본 이름 지정 방식을 대체 할 수 있습니다 . 올바른 구문을 사용하여, 그

package Parent_With_Very_Long_Name.Child is 
    pragma Source_File_Name 
    (Parent_With_Very_Long_Name.Child, Spec_File_Name => "parent-child.ads"); 
end Parent_With_Very_Long_Name.Child; 

될하지만 컴파일러는 지금

parent-child.ads:2:01: incorrect placement for configuration pragma "Source_File_Name" 

이 구성 프라그의 적절한 배치는 장치 전에 말한다 :

pragma Source_File_Name 
    (Parent_With_Very_Long_Name.Child, Spec_File_Name => "parent-child.ads"); 
package Parent_With_Very_Long_Name.Child is 
end Parent_With_Very_Long_Name.Child; 

모두 아주이다 그런데 다른 유닛이 이것을 어떻게 알까요? GNAT에는 소스 기반 컴파일 모델이 있습니다. 한 가지 대답은 구성 파일에 플러그 - 마를 넣는 것입니다. 기본값은 gnat.adc입니다. 더 좋은 대답은 Jacob Sparre Andersen이 제안한대로 GNAT 프로젝트 파일과 package Naming을 사용하는 것입니다.

+0

예, 서로를 포함시키는 방법을 모르는 단위와 관련된 다른 오류가 발생합니다. 이 문제를 해결하려면 구성 파일 또는 추가 사항을 프로젝트 파일에 설명하는 내용이 필요합니다. 오류 : "parent-child.ads 파일에 예상 단위가 없습니다. 예상 단위 parent.child, found unit Parent_with_Very_Long_Name.Child" –

+1

그 특별한 오류가있는 이유를 이해하지 못합니다. 방금 오류없이 대답으로 소스를 컴파일했습니다. 네, 설정 파일이나 프로젝트 파일이 필요합니다. –