2012-01-20 14 views
6

Tôi đang sử dụng Visual Studio 2010 Express. Khi tôi sử dụng tên biến nhất định, như "gần 'xa', 'IN', 'OUT', tôi không thể biên dịch: Tôi nhận được lỗi cú pháp nằm sau tên biến được sử dụng Ví dụ:.Visual Studio không cho phép tôi sử dụng một số tên biến nhất định

z = 1.0/(far - near); 

lỗi:?.

error C2059: syntax error : ')' 

Làm thế nào tôi có thể vô hiệu hóa tính năng này ""

Trả lời

12

farnear được xây dựng-in từ khóa biên dịch trở lại trong ngày 16-bit họ không còn tồn tại và họ không còn có bất kỳ ý nghĩa , nhưng chúng vẫn được định nghĩa là macro trong Windows tiêu đề cho các lý do tương thích ngược.

Nếu bạn không muốn họ, chỉ cần undefine họ (hoặc không bao gồm các tiêu đề Windows):

#undef far 
#undef near 
+0

Cảm ơn, nó hoạt động. Có một tùy chọn để tắt tất cả các từ khóa như vậy (đó là tất cả không phải là một phần của tiêu chuẩn C++)? – user1161552

+1

@ user1161552: Có, hãy xóa dòng có nội dung '#include ' khỏi mã của bạn. Chúng không phải là từ khóa, chúng là các macro được xác định trong các tiêu đề Windows. –

+0

Chỉ cần đi qua câu trả lời của bạn và muốn chỉ ra, rằng đây sẽ là một ví dụ hoàn hảo cho những gì không gian tên dành riêng thực hiện (tên bắt đầu với hai dấu gạch dưới) có nghĩa là cho. Microsoft là để đổ lỗi ở đây vì không giữ cho không gian tên đó. – datenwolf