我将我的项目从GNAT 7.3.1传递到GNAT 18.1,并且我对char效果有一个编译错误.
我想在字符串的末尾影响度'°'的特殊字符,但是编译器会给我这个错误:
R : String := "-NNN.N°";
begin
...
R(R'Last) := '°';
return R;
end
Run Code Online (Sandbox Code Playgroud)
我得到了这个:
strings are delimited by double quote character
expected type "Standard.Character"
found a string type
Run Code Online (Sandbox Code Playgroud)
如果我用符号或数字替换符号°,它就可以工作.如果我试图投入到R(R'Last) := Standard.Character('°');
编译器中说同样的话.
任何人都遇到过同样的问题?
Sim*_*ght 10
您的代码(从此处复制并粘贴到我的编辑器中)是UTF-8编码的,因此您的学位符号使用两个字节(十六进制)进行编码C2B0
.
GNAT默认会使用Latin-1,所以你必须告诉它在字符/字符串/文本IO中使用UTF-8 -gnatW8
.
举个例子lnlb.adb
,
with Ada.Text_IO;
procedure Lnlb is
R : String := "-NNN.NX";
begin
R(R'Last) := '°';
Ada.Text_IO.Put_Line (R);
end Lnlb;
Run Code Online (Sandbox Code Playgroud)
编译(在macOS上)
$ gnatmake lnlb.adb -gnatW8
gcc -c -gnatW8 lnlb.adb
gnatbind -x lnlb.ali
gnatlink lnlb.ali
Run Code Online (Sandbox Code Playgroud)
并运行
$ ./lnlb
-NNN.N°
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
115 次 |
最近记录: |