在第二个写入语句之后的下面的代码中插入了一个空格,我不明白为什么
write(output_line,string'(" when x"""));
write(output_line,address_map(1 to address_count));
write(output_line,string'(""""));
我期望得到---当x "adressmap"
时,而是接受-----当x "adressmap "
我不希望p和引号之间有这个额外的空间,为什么会发生这种情况呢?
答案 0 :(得分:1)
有了这个:
use std.textio.all;
entity foo is
end entity;
architecture fum of foo is
constant address_map: string := "address_map";
constant address_count: natural := address_map'LENGTH;
begin
process
variable output_line: line;
variable output_line_length: natural;
variable read_buff: string (1 to 80);
begin
write(output_line,string'(" when x"""));
write(output_line,address_map(1 to address_count));
write(output_line,string'(""""));
output_line_length := output_line'length;
read(output_line, read_buff(1 to output_line_length));
report "output_line = " & read_buff(1 to output_line_length);
wait;
end process;
end architecture;
我明白了:
%foo
foo.vhdl:21:9:@ 0ms :(报告说明):output_line =当x“address_map”
其中没有显示output_line
访问过的字符串引用部分中的额外空格。
这告诉我们您的额外空间来自您未提供的声明或声明。您的代码不是Minimal, Complete, and Verifiable example。
您的实际代码中似乎有address_count
错误。
你可以注意到提供一个mcve可能会指出你的差异。