2012-03-30 22 views
5

Tôi đang cố gắng chuyển giá trị của macro C tới bộ tiền xử lý bằng tùy chọn -Dmacro = value của gcc. Tuy nhiên, nó không làm những gì tôi mong đợi. Đây là thông tin cơ bản về mã của tôi:tại sao gcc không truyền giá trị macro từ dòng lệnh?

#define T0 0 
#define T1 0 
#define T2 0 
#define T3 0 

int main(){ 

    int f[9]; 

    start(f[T0], f[T1], f[T2], f[T3]); 

    return 0; 
} 

hiển thị bộ xử lý trước không thay thế giá trị ban đầu của T3. Tôi đang thiếu gì và giá trị có thể được chuyển đúng cách?

+0

Tôi chỉ tự mình gặp vấn đề này, và có một chút ngạc nhiên b/c Tôi luôn nghĩ rằng định nghĩa dòng lệnh sẽ ghi đè định nghĩa nội tuyến. Tôi mơ hồ nhớ rằng trình biên dịch Microsoft làm điều đó, nhưng không may, tôi không có quyền truy cập vào một trong một thời gian. Tôi bất cứ ai với MSVC có thể kiểm tra và đăng thông tin, điều đó sẽ tốt đẹp. – ysap

Trả lời

7

Afaik chuyển đổi đó sẽ xác định macro, nhưng mã của bạn sau đó ghi đè nó trở lại 0. Xóa xác định đó khỏi mã của bạn hoặc bao quanh nó bằng ifdef và nó sẽ ổn.

+3

Xung quanh nó với ifdef đã làm các trick, cảm ơn. – quetric

Các vấn đề liên quan