tôi có một phần của mã như dưới đây:#ifdef không làm việc như mong đợi với tiêu đề precompiled
#define FEATURE_A 1
void function()
{
// some code
#ifdef FEATURE_A
// code to be executed when this feature is defined
#endif
// some code
}
Chương trình không thực thi mã bên #ifdef - #endif. Nhưng khi tôi thay đổi #ifdef thành #ifndef và xóa #define macro, mã được thực thi. Mã bên dưới hoạt động như mong đợi.
//#define FEATURE_A 1
void function()
{
// some code
#ifndef FEATURE_A
// code to be executed when this feature is defined
#endif
// some code
}
bất cứ ai có thể giải thích lý do tại sao trong các mã trường hợp đầu tiên bên #ifdef - #endif không được thực hiện và trong trường hợp thứ hai cho nó hoạt động? Bất cứ ai có thể cho tôi biết cài đặt nào có thể sai?
Không chắc nếu vấn đề này, tôi đang sử dụng visual studio 2010.
Cảm ơn trước
UPDATE: Khi tôi sạch và tái chạy, điều thứ hai cũng không làm việc. chỉ hiển thị trong trình chỉnh sửa dưới dạng mã được bật.
Khi tôi xác định macro trong project-> property-> Configuration Properties-> c/C++ -> Preprocessor, cả hai đều hoạt động tốt.
bạn có chắc rằng bạn không có 'FEATURE_A' #undef nơi nào đó? – mvp
Nếu bạn muốn xem mã sau khi tiền xử lý biên dịch với cờ '-E' – aaronman
Bạn cần đăng toàn bộ chương trình thể hiện hành vi này, vì nó không có ý nghĩa gì. –