私はconst char *
を返すcメソッドを持っており、この関数をspecmanコードにインポートしました。 "e"で文を実行した後、文字列の値が壊れています。 C空間のポインタを参照している可能性があります。c string to specman code
C署名:電子内
const char* myFun(const char* key)
{
static string myVal;
myVal = myDictionary[key];
return myVal.c_str();
}
:E使用量の
myFun(key : string) : string is foreign dynamic C routine
:このコードで間違っているものに
var str : string;
var str2 : string;
str = myFun("my_test");
outf("%s",str) ---> here it gives the correct value
str2 = myFun("my_test2");
----------
----------
outf("%s",str) ---> here it gives some garbage value, statements in the middle doesn't edit this string in anyway.
考えですか?
問題を示すMCVEとしてC関数を表示します。 –
はc関数@WeatherVaneのコードを追加しました – Harish
静的な文字列myVal;を宣言することで、 'myVal'は' myFun'へのさまざまな呼び出しで保持されます。返すたびに***同じ* **ポインタ。 myFunが呼び出されるたびに同じ文字列を上書きしていると思われます。 'static'を削除し、' string myVal'をパラメータとして渡します。 –