C không có toán tử nối chuỗi cụ thể ( +
) như C # và Java. Trong C # hoặc Java, khi trình biên dịch nhìn thấy
"a" + "b"
nó có thể biên dịch mã chính xác như thể
"ab"
đã được viết trong mã nguồn. Tuy nhiên, trong C, không có cú pháp dễ dàng tương tự để mô tả nối chuỗi mà trình biên dịch có thể nhận ra và tính toán trước. Vì vậy, các nhà thiết kế của C nhiều thập kỷ trước đã chọn điều đó
"a" "b"
có nghĩa chính xác giống như
"ab"
Đương nhiên C ++ được thừa hưởng quy ước tương tự. Trong khi chuẩn C ++ quá tải thư viện +
trên std::string
để nối chuỗi trung bình, trình biên dịch không cố gắng liên hiệp"a" + "b"
bởi vì đó thực sự là một lỗi (bạn không thể thêm hai const char *
con trỏ với nhau).
#define FOO "foo-value"
theo sau là"FOO's value is " FOO "."