Дескриптор объекта Const в качестве аргумента в функции - PullRequest
0 голосов
/ 08 июня 2019

Я пытаюсь написать функцию, которая принимает аргумент, который является дескриптором объекта const.

function void example(const MyClass ob);
    //--
endfunction 

Когда я пытаюсь запустить этот код, я получаю сообщение об ошибке:

syntax error, unexpected type name. The type 'MyClass' is defined at test.sv(1).

Вы можете сделать дескриптор объекта const, но почему вы не можете сделать это в списке аргументов функции? Кстати, я знаю, что это может быть только дескриптор объекта const, а не объект класса const, и что (к сожалению) невозможно сделать объект класса const в SystemVerilog.

1 Ответ

2 голосов
/ 08 июня 2019

Не существует такого понятия, как const объект handle . Есть класс констант переменные . Как и любая переменная const , они получают значение один раз как часть своего объявления и после этого становятся доступными только для чтения.

Класс переменная имеет значение, которое является дескриптором для класса объекта . Вы хотите иметь возможность скопировать аргумент функции с дескриптором, который был передан в качестве входа в функцию. Если SystemVerilog позволил вам объявить аргумент как переменную const, вы не могли бы сделать ему присвоение.

Существует понятие const ref аргумента функции, но оно имеет очень небольшое значение, поскольку оно только предотвращает изменение локальной переменной аргумента. Вы по-прежнему можете писать любому члену класса с указателем на объект.

...