에서 변수를 반환 나는이 C 매크로는 컴파일에 실패 이유에 조금 혼란 스러워요 :C : 만들기 및 매크로
src/event.lcpp.c:134:15: error: expected primary-expression before ‘typeof’
src/event.lcpp.c:134:15: error: expected ‘)’ before ‘typeof’
:를 호출 할 때
#define LUA_GET_FIELD(Lua, idx, name, type) (\
lua_getfield((Lua), (idx), (name)), \
typeof(lua_to##type) __result = lua_to##type((Lua), -1), \
lua_pop((Lua), 1), __result)
, 내가 오류를 얻을
typeof(lua_to##type)
을 int
으로 바꾼다면 똑같은 문제가 발생하므로 쉼표로 문제를 해결해야합니다. 이런 식의 중간에 변수를 선언 할 수 있습니까?
gcc는 블록에서 값을 반환하기위한 확장자를 가지고 있지만 컴파일러 확장을 피하고 싶습니다. 또한 인라인 함수로 변경해야한다는 것을 알았지 만 매크로가 작동하지 않는 이유가 궁금합니다.
'typeof (lua_to ## type) '표현식은'lua_to ## type' 함수가 반환하는 함수 유형이 아닌 함수 유형으로 평가됩니다. –
"컴파일러 확장을 피하고 싶습니다."- typeof는 컴파일러 확장이므로 사용하고 싶다면 다음 단계를 수행하는 것이 좋지 않을 수 있습니다. –
Drat, 두려웠습니다. : | – Rena