Funktionsparameter umdrehen?
-
ich hab ein define
#define XXX(a,b) ...
jetzt gefällt mir die reihenfolge nicht mehr. frag mich selbst, was ich mir dabei gedacht hab. ich würd es gern umdrehen, also so:
#define XXX(b,a) ...
habs aber schon geschätzte 100 mal verwendet, geht das iwie automatisch? sowas hat doch sicher jmd. von euch in der schublande
-
schublade :p
-
kommt schon, das sind doch nur 2 dateien mit insgesamt 10 zeilen
-
vllt. lässt sich auch aus find und awk ein einzeiler basteln
-
eher sed statt awk
-
so viele antworten hab ich eig. nicht erwartet...
-
Mach doch noch ein zweites define, dass das erste mit umgedrehten Parametern aufruft.
-
_matze schrieb:
Mach doch noch ein zweites define, dass das erste mit umgedrehten Parametern aufruft.
so schwer kanns dann doch nicht sein. naja, muss ich eben wieder selbst hand anlegen, war ja klar. danke trotzdemd
-
Regex? Mit
\1
und\2
sollte das nicht allzu schwer hinzukriegen sein.
-
kellerassel schrieb:
so viele antworten hab ich eig. nicht erwartet...
Nach einer halben Stunde? Komisch; normalerweise wartet doch das gesamte Forum nur rund um die Uhr geifernd darauf, endlich deine Fragen beantworten zu koennen.
Zur Frage: Search & Replace mit Regex und -- wie von Nexus vorgeschlagen -- \1 \2 oae. Sicherheitshalber "Query Replace" statt normalem "Search and Replace". Dann noch die Testsuite anwerfen und sicherstellen, dass alles richtig funktioniert und fertig.
-
#!/bin/bash find . -type d -name "trash" -prune -o -iname "*.[ch]" -exec sed -r 's/MEM__FREE\((.*?),(.*?)\)/MEM__FREE\(\2,\1\)/' -i {} \;
man kann da sicher mit den .*? noch was drehen vllt. kann ja jmd. was besseres vorschlagen, aber es hat funktioniert. denk beim posts schreiben hab ich mehr zeit verschwendet als wenn ich es gleich selbst gemacht hätte
-
nman schrieb:
Dann noch die Testsuite anwerfen und sicherstellen, dass alles richtig funktioniert und fertig.
man muss ja nicht übertreiben mit dem testen... aber hey, wenn du mir sagen kannst, ob das an meiner software liegt, dass webbrowser 2.30.6 mit der webkit engine alle requests doppelt schickt wär ich schon ein ganzes stück weiter
-
kellerassel schrieb:
#!/bin/bash find . -type d -name "trash" -prune -o -iname "*.[ch]" -exec sed -r 's/MEM__FREE\((.*?),(.*?)\)/MEM__FREE\(\2,\1\)/' -i {} \;
man kann da sicher mit den .*? noch was drehen vllt. kann ja jmd. was besseres vorschlagen, aber es hat funktioniert. denk beim posts schreiben hab ich mehr zeit verschwendet als wenn ich es gleich selbst gemacht hätte
das ist jetzt zwar eine nette Zeile die ich mir gleich mal speichere, aber für deinen Einsatzzweck...
ich hätte das mit 'nem emacs-keyboardmacro schneller fertig als die Frage hier zu stellen oder gar solch eine (einfache und nur manchmal richtige) regex zu verfassen
Ich kann nur empfehlen seinen C++ Editor gut zu beherrschen, dass man nicht mit solch einer find/sed Lösung kommen muss.
Noch besser wäre natürlich eine Refactor-Funktion in der IDE, aber ich bezweifle das irgendeine C++ IDE diesen parameter-umdreh-Fall drin hat.
-
das advanced-find plugin für gedit kanns auf jeden fall auch. hätt ich mir das doch bei der letzten verwendung nur mal besser angeschaut
Master of the Emacs schrieb:
...oder gar solch eine (einfache und nur manchmal richtige) regex zu verfassen
ja, da sollte man sich schon relativ sicher sein und sein projekt halbwegs gut kennen. aber es ist ja auch nicht so groß und die zeilen mit dem MEM__FREE hab ich erst vor ein oder zwei monaten umgeschrieben und für notfälle hab ich vorher eine kopie angelegt
-
kellerassel schrieb:
für notfälle hab ich vorher eine kopie angelegt
Normalerweise hast du ein VCS und damit stellt sich die Frage nach Sicherungskopien nicht...
-
Shade Of Mine schrieb:
Normalerweise hast du ein VCS und damit stellt sich die Frage nach Sicherungskopien nicht...
Vor allem kann man sich damit auch gut ansehen, was gerade geändert wurde.
-
wenn ich mal nicht mehr allein bin, spiel ich es in ein vcs
-
Selbst wenn du alleine bist, solltest du es in ein VCS packen. Mit Git, Mercurial und Konsorten brauchst du ja nichtmal irgendeine Art von Server; einfach nur in jedem x-beliebigen Verzeichnis "git init" und du brauchst dir keine Sorgen mehr darueber machen, ob deine Aenderungen gerade irgendwas zerschieszen.
-
nman schrieb:
Selbst wenn du alleine bist, solltest du es in ein VCS packen. Mit Git, Mercurial und Konsorten brauchst du ja nichtmal irgendeine Art von Server; einfach nur in jedem x-beliebigen Verzeichnis "git init" und du brauchst dir keine Sorgen mehr darueber machen, ob deine Aenderungen gerade irgendwas zerschieszen.
ein vcs ohne ausgereifte ide macht imho keinen sinn. und unter linux fällt mir spontan keine gute ein!
-
Zum einen braucht man selbst bei csv oder subversion keinen Server. Da kann man auch ein lokales Repository anlegen.
Und was hat ein vcs mit einer IDE zu tun? Ich verwende keine IDE aber dennoch ein vcs. Man kann ein vcs auch von der Kommandozeile bedienen. Und für mich macht es Sinn.