Что послужило причиной этой ошибки компиляции Ada "литерал неоднозначных символов"?

У меня есть этот код Ады.

with Ada.Text_IO; 
use Ada.Text_IO;

procedure for_Loop is
begin
    for Counter in 'A'..'Z' loop
        Put(Counter);   
    end loop;
    New_Line;
end for_Loop;

Компилятор Ada (gnatmake) выводит эти сообщения об ошибках.

gcc -c for_loop.adb
for_loop.adb:6:24: ambiguous character literal
for_loop.adb:6:24: possible interpretation: Character
for_loop.adb:6:24: possible interpretation: Wide_Character
for_loop.adb:6:24: possible interpretation: Wide_Wide_Character
gnatmake: "for_loop.adb" compilation error

Что не так с кодом?

1 ответ

Решение

Из этого поста:

Проблема в том, что "A" и "Z" могут быть из Character или Wide_Character. Самое простое исправление - сделать тип явным; Например: для Char в символьном диапазоне 'A' .. 'Z' loop ... end loop;

with Ada.Text_IO; 
use Ada.Text_IO;

procedure for_Loop is
begin
    for Counter in Character range 'A'..'Z' loop
        Put(Counter);   
    end loop;
    New_Line;
end for_Loop;

Это выходной:

ABCDEFGHIJKLMNOPQRSTUVWXYZ
Другие вопросы по тегам