teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

追記

2020/02/03 06:50

投稿

fana
fana

スコア12229

answer CHANGED
@@ -2,4 +2,30 @@
2
2
 
3
3
  > print('hello world!!')
4
4
 
5
- これに戻り値が無いからなのでは…?
5
+ これに戻り値が無いからなのでは…?
6
+
7
+ ---
8
+
9
+ ちょっとテストしてみました.
10
+ ↓のコードを実行すると,結果として5が表示され,
11
+ luaL_dostringの第二引数を`"print('hello world!!')"`にすると`there are no string`が表示されますので,
12
+ やはり,`print`は戻り値が無いのではないかと.
13
+ ```C++
14
+ lua_State* L = luaL_newstate();
15
+ luaL_openlibs(L);
16
+
17
+ std::cout << "(Call luaL_dostring)" << std::endl;
18
+ if (luaL_dostring(L, "return 5") == 0 ) //※戻り値をスタックに積んでみるテスト
19
+ {
20
+ std::cout << "(Call lua_tostring)" << std::endl;
21
+ auto ret = ( lua_tostring(L, -1) );
22
+ if( ret )
23
+ { std::cout << "(result is)" << ret << std::endl; }
24
+ else
25
+ { std::cout << "there are no string" << std::endl; }
26
+ }
27
+ else
28
+ { std::cout << "luaL_dostring err" << std::endl; }
29
+
30
+ lua_close(L);
31
+ ```