, 당신은이 작업을 수행 할 수 있습니다
' Need to use DECLARE LIBRARY for the C function getcwd(string, stringSize).
DECLARE LIBRARY ""
FUNCTION getcwd$ (buffer$, BYVAL buflen)
END DECLARE
' Wrapper function for making usage of getcwd$ more BASIC-like.
DECLARE FUNCTION qb64cwd$()
' Print the current working directory.
PRINT qb64cwd$
FUNCTION qb64cwd$()
' 32768 characters should be more than large enough on any OS.
REDIM s AS STRING * 32768
qb64cwd$ = getcwd$(s, 32768)
END FUNCTION
당신 동안 돈 래퍼 함수가 필요하다. C 함수는 충분한 양의 쓰기 가능한 메모리가있는 문자열을 전달해야한다. 즉, getcwd
은 메모리를 할당하지 않습니다. 충분한 양의 메모리를 전달할 것으로 예상하고 QB64의 동적 크기가 STRING
인 경우 그렇게하지 않으므로 래퍼를 사용하여 충분한 크기의 고정 길이 문자열을 만들어 함수에 전달합니다. 래퍼는 대부분의 경우 충분하기에 충분합니다. 이것은 또한 OS X와 Linux (그리고 QB64가 실행되는 다른 POSIX와 비슷한 시스템, 아마도 Android를 포함하여)에서도 작동해야합니다. 나는 그 시스템에서 테스트하지 않았지만, getcwd
은 POSIX 함수이기 때문에 작동 할 것이다.
숫자가 너무 크면 어떻게됩니까? QB64에서는 배열을 라이브러리 함수에 전달할 수 없으며, 이 CONST variable = ...
이 아니면 STRING * variable
을 사용할 수 없습니다. 즉, 문자열을 확대하고 다시 시도 할 수 없음을 의미합니다. 실수로 문제가 발생했다면 오류가 발생해야합니다 (예 : ERROR 75
).
가 왜'_CWD을 $'사용하지 않고 그것은 충분히 효율적이지 않은가? – BdR
쿼드 코어는 최근의 QB64 더티 빌드를 실행하지 않고 오직 _CWD $를 지원하지 않는 QB64의 구어체 만 사용하며 하나의 오류 루틴과 1,000 초 코드 행이있을 때 오류가 발생하는 것은 효율적이지 않습니다. – eoredson