0
다음 코드를 고려하십시오 : C++에서 system()에서 #define을 사용하는 방법은 무엇입니까?
#define LV_INFO(major,minor) lvdisplay -c | grep major':'minor >/root/lvInfo.txt
int main(){
int major=256,minor=6;
system(LV_INFO(major,minor));
return 0;
}
그러나 시스템으로 작동하지 않는 코드 위
따옴표로 입력 매개 변수로 명령을해야합니다.그것은 의미,
#define LV_INFO(major,minor) "lvdisplay -c|grep major':'minor >/root/lvinfo.txt"
그러나 중 하나가 작동하지 않습니다. 메이저와 마이너의 값은 main()
에 지나지 않습니다.
시스템 호출에서 주어진 매개 변수로 위의 명령을 어떻게 실행합니까?
도와주세요.
내가 솔루션을 시도하고 일정한 값으로 잘 작동하지만 내 프로그램이 값은 그래서, 내가 전달하는 시도 런타임에 따라 달라집니다.. main()의 값을 #define으로 사용 - #define LV_INFO (major, minor) "lvdisplay -c | grep"#major " ':" "#minor"> /root/lvInfo.txt "그러나 다시 작동하지 않습니다. 매개 변수의 런타임 값을 가져 오지 않습니다. 그것은 단지 문자열 major와 minor를 명령에 넣습니다. 런타임 값으로 실행하도록 도와주세요. – Ashwini
문자열 값이 컴파일 타임에 발생하기 때문에 런타임 값을 문자열화할 수 없습니다. 필자가 제안한 것처럼'sprintf' 또는 유사한 함수를 사용하여 명령 문자열을 만들어야합니다. – SolarBear
sprintf를 사용하여 문자열을 작성하고 #define에서 사용하는 방법에 대해 자세히 설명 할 수 있습니까 ?? 그것을 exctly하는 방법? – Ashwini