Mam program w języku C, który próbuje zmodyfikować literał ciąg stały. Jak teraz dowiedziałem się, że to nie jest dozwolone.dlaczego clang ++ zachowuje się odmiennie od klang, skoro ten pierwszy jest łączem symbolicznym tego ostatniego?
Podczas kompilacji kodu z clang test.c
kompilator nie daje żadnego ostrzeżenia. Ale kiedy go skompilować z clang++ test.c
daje ostrzeżenie:
test.c: 6: 15: ostrzeżenie: konwersja z ciągiem do dosłownego 'char *' jest przestarzała [-Wdeprecated zapisu-strings] char * s = "cześć świat"; ^
Problemem jest to, że okazuje się, clang++
jest tylko link symbolem clang
:
ll `which clang++`
lrwxr-xr-x 1 root admin 5 Jan 1 12:34 /usr/bin/[email protected] -> clang
Więc moje pytanie brzmi: jak clang++
mógł zachowuje się inaczej od clang
zważywszy, że jest to związek symbolem clang
?
Czy masz na myśli to, że _bash_ patrzy na 'argv [0]' i zmienia zachowanie? Więc w bashie jest to zakodowane, że 'clang ++' zachowuje się inaczej niż 'clang'? – RockU
Przepraszam, nie myślałem wystarczająco. Jest mocno zakodowany w 'clang'. Dziękuję :) – RockU
Czy mógłbym cytować tę technikę jako "niecodzienną i zniechęconą"? Nie znaczy bash, po prostu ciekawy. –