2012-08-25 61 views
5

thể trùng lặp:
“static const” vs “#define” in c#define MY_INT VS const int MY_INT

Khi tôi làm điều này:

#define WEEKDAYS 7 

và rằng:

const int WEEKDAYS = 7; 

Bất kỳ sự khác biệt nào giữa chúng? dường như cả hai đều làm điều tương tự - đặt giá trị không đổi cho việc sử dụng trong tương lai trong mã.

+2

Bạn đã gắn thẻ thẻ này là cả C và C++. Các câu trả lời hơi khác nhau đối với các ngôn ngữ khác nhau. – hvd

+0

Sẽ dễ dàng hơn khi nói ** KHÔNG BAO GIỜ ** gắn thẻ câu hỏi cả C và C++. –

+0

@JeffMercado Nó sẽ dễ dàng hơn, nhưng nó sẽ sai. :) Ví dụ đơn giản nhất là câu hỏi hỏi về một trong những khác biệt giữa C và C++ (tôi nhớ lại câu hỏi gần đây hỏi tại sao 'sizeof ('a')' khác với 'sizeof (char)' trong C, nhưng không phải trong C++) – hvd

Trả lời

6
#define WEEKDAYS 7 

void f() { 
    int WEEKDAYS = 3; // error 
} 

const int WEEKDAYS_CONST = 7; 

void g() { 
    int WEEKDAYS_CONST = 3; // okay: local scope for WEEKDAYS_CONST 
} 
2
#define WEEKDAYS 7 

Thay thế tất cả các lần xuất hiện của từ WEEKDAYS trong tập tin nguồn của bạn với các chữ số 7.

const int WEEKDAYS = 7; 

Định nghĩa một hằng số thực tế thể hiện bằng 7 mà bạn có thể truy cập vào trong mã của bạn.