"printf" 문자열만 찾을 게 아니라, "sprintf" "fprintf" 등을 피해야 하고 또한 "printf(" "printf (" 등의 경우도 고려해야겠지요. 단순히 문자열을 찾아서 자동으로 어떻게 하는 건 어쨌거나 비추천입니다. 심지어 다음과 같은 극악한 경우도 가능하겠죠.
if (...) {
statement..
statement..
}
else
printf (...); // 이걸 그냥 없애거나 주석처리해 버리면? NO!!
a = b;
...
약간의 불필요한 로드를 감수하더라도 그냥 #include <stdio.h> 바로 다음에서 printf()를 새로 정의하는 게 안전할 것 같습니다.
만줄이면 쉬엄쉬엄 고쳐도 되겠군요.소스 코드를 특정 툴로 막 고치는
만줄이면 쉬엄쉬엄 고쳐도 되겠군요.
소스 코드를 특정 툴로 막 고치는것은 별로 권장하고 싶지 않군요.
------------------ P.S. --------------
지식은 오픈해서 검증받아야 산지식이된다고 동네 아저씨가 그러더라.
절대로 추천하지 않지만, '모든 소스' 라면..printf를 #und
절대로 추천하지 않지만, '모든 소스' 라면..
printf를 #undef 해버리고, no-op으로 다시 define 하는게 가장
간단한 방법일 거 같습니다.
----
Let's shut up and code.
편집기에서 printf 문구를 notihng_printf 로 바꾸고아
편집기에서 printf 문구를 notihng_printf 로 바꾸고
아무 코드도 들어있지 않는 nothing_printf 함수를 하나 만들어주면 되겠네요.
7번 작업하면 되겠네요. :)
[code:1]perl -pi -e 's/*printf*//g' *.c[
perl -pi -e 's/*printf*//g' *.c
실험해보지 않아서 무슨일이 일어날지 모릅니다. :twisted: 백업하시고 실험해 보세요. :)----
자신을 이길 수 있는자는
무슨짓이든 할수있다..
즉..무서운 넘이란 말이지 ^-_-^
나? 아직 멀었지 ㅠㅠ
디버깅용으로 삽입한 printf() 입니다. 삭제 해도 전혀 상관
디버깅용으로 삽입한 printf() 입니다.
삭제 해도 전혀 상관 없구요.
sed로 치환 하는 것은 할 수 있는데 라인 자체를 없애는 건 못해서 그럽니다.
도와 주세요.
invert grep을 이용하시면 될듯
grep -v printf from.c > to.c
이런식으로 해보세요.
여러 파일 한꺼번에 할려면 적절히 스크립트 짜시면 될듯하고
vim에서q : record/pr
vim에서
q : record
/printf
dd
w :record를 담을 key(a-z)까지 아무거나.
100@w :100번 실행
정확한 건 찾아서 해보세요...
반드시 백업하시고요.
위에글중 :뒤는 설명입니다.:앞에것만 치세요.
위에글중 :뒤는 설명입니다.
:앞에것만 치세요.
그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
[code:1]for i in `find ./ -name \*.c`; d
/***********************
* while(1) sleep(INFINITE);
***********************/
vi 에서,:g/printf/dprintf 줄은 다 지워지
vi 에서,
:g/printf/d
printf 줄은 다 지워지지요...
---
http://coolengineer.com
[quote="ironiris"]편집기에서 printf 문구를 notih
원츄~ (편집기에서 nothing_printf로 바꾼다는 부분만 빼고)
lovejin0309님이 어떻게 coding하셨는 지 잘은 모르겠지만, printf를 두 줄 이상에 걸쳐서 사용했다면 단순한 pattern matching만으로는 매우 위험합니다.
printf(blahblah~);
라고만 하면 괜찮은데,
라고 하신게 있다면.... 대략 난감 ㅡ.ㅡ;
Run emacs and try:1. C-s printf2.
Run emacs and try:
1. C-s printf
2. C-M-b
3. C-<space>
4. C-s (
5. C-b
6. C-M f
7. C-s ;
8. C-f
9. C-w
If that works,
0. C-x (
1 - 9
10. C-x )
Then C-u 1000000 C-x e (1000000 means quite big unknown number)
grep printf\( *.c 라고 하신뒤일일히 vi나 vim으로
grep printf\( *.c 라고 하신뒤
일일히 vi나 vim으로 열어서 찾아서 지우세요.
7개밖에 안넣었다면 7번만 고치면 되겠네요...
초심자의 무대포입니다.
내 마음속의 악마가 자꾸만 나를 부추겨.
늘 해왔던 것에 만족하지 말고 뭔가 불가능해 보이는 것을 하라고 말야.
그냥 preprocessing 기능을 이용하세요.헤더 하나 만드시
그냥 preprocessing 기능을 이용하세요.
헤더 하나 만드시고
각 소스파일에서 마지막 include 문 다음 저 헤더를 추가해 주세요.
---------
간디가 말한 우리를 파괴시키는 7가지 요소
첫째, 노동 없는 부(富)/둘째, 양심 없는 쾌락
셋째, 인격 없는 지! 식/넷째, 윤리 없는 비지니스
이익추구를 위해서라면..
다섯째, 인성(人性)없는 과학
여섯째, 희생 없는 종교/일곱째, 신념 없는 정치
[code:1]#include <stdio.h>[/co
한 다음에.
C FAQ: http://www.eskimo.com/~scs/C-faq/top.html
Korean Ver: http://cinsk.github.io/cfaqs/
[code:1]printf(blahblahblah... bla
일때
vim에서
qw
/printf
shift-v
/);
$
d
q
1000@w
위에 q하고 나중에 w가 아니고 qw하고 나중에 q를 붙어야 되네요
생각으로만 적다보니 약간 틀렸군요.
그나저나 백수 언제 탈출하냐... ㅡㅡ; 배고파라.
"printf" 문자열만 찾을 게 아니라, "sprintf" "fprin
"printf" 문자열만 찾을 게 아니라, "sprintf" "fprintf" 등을 피해야 하고 또한 "printf(" "printf (" 등의 경우도 고려해야겠지요. 단순히 문자열을 찾아서 자동으로 어떻게 하는 건 어쨌거나 비추천입니다. 심지어 다음과 같은 극악한 경우도 가능하겠죠.
약간의 불필요한 로드를 감수하더라도 그냥 #include <stdio.h> 바로 다음에서 printf()를 새로 정의하는 게 안전할 것 같습니다.
약간의 불필요한 로드를 감수하더라도 그냥 #include <stdi
약간의 불필요한 로드를 감수하더라도 그냥 #include <stdio.h> 바로 다음에서 printf()를 새로 정의하는 게 안전할 것 같습니다.
추후 printf 사용되지 않을거라는 가정하에만 사용할수 있고
실제로 코딩을 하다보면 종종 사용하게 됩니다.
재정의를 지웠다고 하더라도 필요없는 printf문이 다시 살아나게 됩니다.
다시 사용되지 않을 printf문들은 삭제하는 편이 좋습니다.
일반적인 open소스를 보더라도 printf문을 재정의해서 살려놓지는 않습니다.
매크로는 문제가 좀 있습니다. 예를 들어서[code:1]print
매크로는 문제가 좀 있습니다. 예를 들어서
이렇게 코딩되어 있다면 단순히 printf 를 전처리기로 무시하기에는 어려운 상황이 될 것같습니다.
그리고, 매크로 함수에서의 가변인자는 gcc 정도에서만 지원되기 때문에 호환성에서도 문제가 생길 수 있습니다.
저라면 아래와 같이 해결할 것 같습니다.
이것이 속도에 영향을 미치는 상황이라면 (지원되는 상황이라면) inline 으로 함수를 정의해도 괜찮을 것 같습니다.
p.s. 위에 똑같은 답변이 있었군요... 제대로 안보고 글을 썼습니다. 죄송합니다.
댓글 달기