Передача repeatTime из ns2 в файл.cc
Я пишу код для простой симуляции. У нас есть 10 узлов и один узел приемника. Я хочу запустить симуляцию 5 раз. Единственное, что я знаю, так это то, что мне нужно написать set val(repeatTimes) 5
, но я не знаю, как использовать его в симуляции. Кроме того, я добавляю две строки кода, как указано в соответствующем файле mac-simple.cc, чтобы получить время повтора от ns2. Затем я компилирую файл.cc и запускаю симуляцию. Однако, когда я запускаю файл.tcl, он показывает мне ошибку, что он не может найти переменную repeatTimes.
Вот две строки кода, которые я добавляю под функцию Mac():
tcl.evalf("Mac/Simple set repeatTimes");
bind("repeatTimes", &repeatTimes);
У вас есть решение этой проблемы? Если вы не знаете решение, можете ли вы привести меня к форуму / веб-сайту, где я могу найти решение?
заранее спасибо
1 ответ
Это bind
в вашем конструкторе для класса Mac/MncPrj
объект? (Вот где это должно быть.) Если это так, это должно быть до tcl.evalf
вызов, потому что он определяет переменную с точки зрения OTcl; код для чтения не будет работать (и будет генерировать ошибку Tcl - исключение на уровне Tcl - если вы попытаетесь это сделать) до тех пор, пока не будет выполнено связывание.
Как только вы сделали привязку, вы можете прочитать переменную со стороны сценария Tcl:
Mac/MncPrj set repeatTimes
и напишите это:
Mac/MncPrj set repeatTimes $whateverTheValueIs
Вы должны избегать хранения значения в массиве Tcl; это будет неживой копией и сбит вас с толку. (Если вы не углубляетесь в магию trace add variable
и это определенно смущает вас. Это меня иногда смущает!)