Why func ("abc", "def"); компилирует - PullRequest
       28

Why func ("abc", "def"); компилирует

2 голосов
/ 14 сентября 2011

только что наткнулся на промах в моем коде, функция была вызвана вот так

func("text1" "text2");

вместо

func("text1", "text2");

Дело в том, что она на самом деле компилируется и работает), две строки обрабатываются как одна (т. е. вызов перегруженного функционала получает ввод "text1text2").

Является ли это нормальным стандартным поведением (т.е.) или нет?

Ответы [ 4 ]

8 голосов
/ 14 сентября 2011

Да, это называется конкатенация строковых литералов и является функцией компилятора C и C ++.

4 голосов
/ 14 сентября 2011

Да, это нормальное поведение.Это полезно для того, чтобы строковые константы занимали несколько строк.У вас должна быть перегрузка "func" где-нибудь, которая может принять единственный параметр char*.

3 голосов
/ 14 сентября 2011

Да, это стандартное поведение.

2 голосов
/ 14 сентября 2011

Да, это полезно для построения строк на основе #define с.

#define MY_FOLDER "/some/folder/"
#define MY_FILE   MY_FOLDER "file.txt"
// expands to "/some/folder/file.txt"
...