Gần đây tôi đã bị một con bọ tinh vi cắn.Tại sao cho phép nối chuỗi ký tự chuỗi?
char ** int2str = {
"zero", // 0
"one", // 1
"two" // 2
"three",// 3
nullptr };
assert(int2str[1] == std::string("one")); // passes
assert(int2str[2] == std::string("two")); // fails
Nếu bạn có quyền hạn đánh giá mã giống như bạn sẽ thấy, tôi đã quên ,
sau "two"
.
Sau nỗ lực đáng kể để tìm lỗi đó, tôi phải hỏi tại sao mọi người lại muốn hành vi này?
Tôi có thể thấy điều này có thể hữu ích cho ma thuật macro, nhưng tại sao đây lại là "tính năng" trong ngôn ngữ hiện đại như python?
Bạn đã từng sử dụng nối chuỗi ký tự trong mã sản xuất chưa?
Tôi đã có một lỗi như thế này nhưng tôi đã có số trên các hàng khác nhau và hàng sau khi dấu phẩy bị thiếu có dấu trừ nên tôi không nhận được lỗi biên dịch. –
Tôi đoán C++ 0x 'literals do người dùng xác định: http://public.research.att.com/~bs/C++0xFAQ.html#UD-literals –
Trong cùng tinh thần, điều gì xảy ra nếu bạn quên '_s' sau chuỗi ký tự chuỗi? – visitor