Wiem, że w sąsiednich literałów łańcuchowych są łączone. Chcę wiedzieć, sąsiednie literówki strunowe połączone z char * s?

Powodem, dla którego pytam o to pytanie, jest dlatego, że chcę przejść konkatensację dwóch strun do {x0}}, a jeden z ciągów nie jest znany z góry, więc muszę użyć char*.

perror("error opening " "file.txt");  // string literals are concatenated

char* filename = "file.txt";  // or some other file
perror("error opening " filename);    // will this work?
0
Galaxy 20 luty 2019, 07:03

2 odpowiedzi

Najlepsza odpowiedź

Nie. Konkatencja literałów ciągowych jest wykonywana podczas tłumaczenia (kompilacja). Operacja, którą żądasz, należy wykonać w programie, gdy wykonuje się. Nie ma przepisu, aby wykonać to automatycznie; Musisz napisać kod, aby przydzielić miejsce na wynikowy ciąg i wykonanie konkatenacji.

4
Eric Postpischil 20 luty 2019, 04:07

Nr sąsiednich literówek ciągowych jest zdolność kompilatora, który traktuje sąsiednich literałów łańcuchowych jako jeden dosłowny cyfrowy, aby pomóc Codziennemu zapisowi kodować kod (w przypadku dużego dosłownika, który nie pasował do linii ładnie).

C Jako język nie ma operatora konkatenacji, najbliższy możesz uzyskać funkcję (strncat, strcat. strcpy, memcpy).

3
Amadan 20 luty 2019, 04:07