\
, khi ngay lập tức theo sau dòng mới, được tiêu thụ bằng cách xử lý trước và làm cho dòng "vật lý" tiếp theo được nối với dòng lôgic hiện tại. Điều này rất quan trọng đối với việc viết các chỉ thị tiền xử lý lâu dài, mà phải là tất cả trên một dòng logic:
#define SHORT very log macro \
consisting of lots and \
lots of preprocessor \
tokens
Nếu bạn loại bỏ các chuỗi dấu gạch chéo ngược dòng mới, nó không còn chính xác nữa. Một số ngôn ngữ khác từ nền văn hóa Unix có cú pháp tiếp tục đường gạch chéo ngược tương tự: ngôn ngữ shell POSIX có nguồn gốc từ trình bao Bourne và cũng là các tệp makefiles.
$ this is \
one shell command
Giới thiệu "\n";
, là biểu thức chính được sử dụng để tạo biểu thức tuyên bố. Trong C, các biểu thức có thể được sử dụng như các câu lệnh, và điều này được khai thác mọi lúc. Ví dụ: cuộc gọi printf
của bạn là một câu lệnh biểu thức. printf("hello world\n")
là biểu thức postfix gọi hàm, nhận giá trị trả về. Bởi vì bạn đã sử dụng biểu thức này như một câu lệnh, giá trị trả lại được bỏ đi. Giá trị trả về của printf
cho biết số lượng ký tự được in hoặc liệu nó có thành công hay không, do đó, bằng cách vứt nó đi, chương trình của bạn tự không biết liệu cuộc gọi printf
có thực sự hoạt động hay không.
Vì giá trị của biểu thức-câu lệnh bị hủy bỏ, nếu tuyên bố đó cũng không có tác dụng phụ, đó là tuyên bố vô dụng không làm gì (như "\n"
) của bạn. Nhưng những lời tuyên bố vô dụng như vậy không sai lầm. Nếu bạn thêm các tùy chọn cảnh báo vào dòng lệnh trình biên dịch của mình, bạn có thể nhận được một cảnh báo như "tuyên bố không có hiệu lực" hoặc một cái gì đó tương tự.
"\ n"; đó là một tuyên bố mà không có bất kỳ ảnh hưởng nào. Nó hoàn toàn bị bỏ qua bởi trình biên dịch và tạo ra một cảnh báo. Hãy thử biên dịch với gcc -Wall flag cho phép cảnh báo biên dịch. – dAm2K
Câu hỏi chính của bạn đã được trả lời nhiều lần. Trong tham chiếu đến phần về '" \ n ";', một chương trình c là (nhiều hơn hoặc ít hơn) một danh sách các câu lệnh. Giá trị bằng chữ (như '3', hoặc' "\ n" ', hoặc' "hamburger" ') là một câu lệnh hoàn toàn hợp lệ, mặc dù nó không _do_ bất cứ điều gì. – jpm