2009-08-01 2 views
5

방금 ​​프로그래밍을 시작하고 K & R을 통해 C를 시도하고 배우려고합니다. 명령 줄 인수 (5.10)에 대한 섹션을 읽었으나 지금은 완전히 혼란 스럽습니다. 커맨드 라인 인수로 작성한 프로그램을 열려고 할 때마다 X라는 인자가 존재한다는 사실을 알게되었습니다.K & R을 시작하는 초심자

`GCC는

어떤 제안을 exist.`하지 않습니다 find.c

열린 찾기 테스트

파일/문서/Learning_C/테스트를 찾을 -o? 감사합니다

답변

3

어떤 시스템을 사용하고 있습니까? 당신이 "./"로 바이너리를 앞에 때,

gcc -o find find.c 
./find test 

As others have noted을 늘 어떤 명명 충돌이 : 유닉스/리눅스에서 당신은 &을 통해 실행 파일을 실행 컴파일합니다. 당신이 당신의 $PATH에 접근 find을 만든 경우, 당신은 대부분 * 괜찬아 배포판 findtest - 표준 프로그램 ... 어쩌면 당신은 더 구체적인 이름을 선택할 수 있습니다 (즉, ./myFind testArg)

일부 충돌이있을 수 있습니다
+0

접두어 "./"*는 적어도 Linux에서는 현재 폴더 "."로 중요합니다. 일반적으로 PATH 변수에 포함되지 않으므로 시스템은 바이너리를 찾지 않습니다. 작성한 실행 파일이 시스템의 표준 프로그램과 동일한 이름 (예 : "test") 인 경우 "./"을 제외하면 컴파일 한 프로그램이 아닌 시스템 프로그램이 사용됩니다. – bluebrother

+0

당신은 내가 말한 것을 오해합니다. 나는 /하지 않았다/말하기 "그것은 접두사에"/. "접두어가 붙어 있든 없든 상관 없습니다. 당신이 말한 것을 정확히 지적했습니다."./ "접두사를 붙이면 명명 충돌이 생기지 않을 것입니다. – Pete

+0

@Pete, 다른 사람들이 제공 한 답변에 도둑질을 해줘서 고마워. 먼저 시스템 명령과 충돌하는 이름을 찾은 다음 ./을 사용하여 참조를 취소하십시오. 숙녀와 신사의 편집을 확인하십시오 ... –

1

출력 실행 파일에 다른 이름을 지정해보십시오.

'test'라는 디렉토리를 찾는 시스템 찾기 명령을 실행 한 것으로 의심됩니다.

또는

./find toto 

편집 실행하여 강제로 시도 : 그것은 처음에 반대 현재 디렉토리에 찾기를 실행하기 위해 쉘을 알려주기 때문에 명령에 ./를 붙이는이 중요하다 '발견 '귀하의 PATH에 존재합니다. 일반적으로 가지고 있지 않은 것이 좋습니다. (현재 디렉토리)를 보안상의 이유로 PATH에 저장하십시오.

HTH

P. K & R.을 통해 일하는 것에 대해 좋은 말을하는 것을 잊었습니다. C에서 30 년 동안 일한 후에도 똑같은 일을 끝냈습니다. 돌아와 마음을 상쾌하게하는 것이 좋았습니다!

0

정확하게 우리가 정확히 무엇을 잘못하고 있는지 추측하지 않고, 언급 한 그림에 사용하고있는 프로그램을 붙여 넣어야합니까?

+0

이것은 아마 코멘트 일 것임에 틀림 없다.. – sud03r

+0

팁에 감사드립니다. – blacky