Ok bạn muốn đặt ra một câu hỏi bí truyền, sau đó hãy xây dựng một câu hỏi hoàn chỉnh.
Bạn đã chạy thử nghiệm như thế nào? Bạn có ý gì khi gặp sự cố? Đầu ra của bạn là gì? Bạn vừa biên dịch, biên dịch và liên kết, hoặc biên dịch và liên kết và gỡ lỗi? Trình biên dịch của bạn được cấu hình như thế nào? Bạn đang đi đâu với thử nghiệm này?
cụm từ như: "một cái gì đó giống như" "ác" không đủ thông tin để có ích
theo dõi:
Theo bản năng tôi sẽ đoán rằng vụ tai nạn này là kết quả của một trình biên dịch tắc tối ưu hóa với mà bạn cho phép trình biên dịch thực hiện các giả định nhất định mà bạn không tuân thủ.
giả định của tôi:
1- Các chính void (void) (không;) là một phần của một lời nhận xét bạn đang làm, nhưng không phải phần của bài kiểm tra bạn đã gửi.
2- Chương trình của bạn không đúng, nhưng điều này là có chủ ý để điều tra hành vi của trình biên dịch/trình liên kết/môi trường thực thi.
Nếu đây thực sự là trường hợp, bạn cần phải giảm độ phức tạp của trường hợp thử nghiệm.
Vui lòng đơn giản hóa trường hợp kiểm tra đến mức tối thiểu cần thiết để gây ra sự cố. Tôi không thể làm điều đó cho bạn, tôi không cài đặt đúng phiên bản phần mềm , dù sao, đó là thử nghiệm của bạn.
sự cố này có bị lỗi không?
struct foo { int i; double d; };
struct foo main(void)
{
int a=0;
return a;
}
hoặc thậm chí ví dụ tối thiểu nhất này?
void * main(void)
{
return 0;
}
của nó là thế này (tôi nghi ngờ nó):
int main(double argc, char ** argv)
{
return 0;
}
Bạn nhận được các ý tưởng. giảm sự sụp đổ đến bản chất của nó. Hãy đến với một chương trình không có lỗi ngoại trừ một điều sẽ làm cho nó bị lỗi.
Sau đó báo cáo lại.
Trình biên dịch không bị lỗi chút nào, đó là lỗi với trình biên dịch nếu gặp sự cố khi cố gắng hiểu mã của bạn. – dreamlax
+1 cho ví dụ khó chịu. Đã cho tôi một chút để tìm ra những gì các frizzle bạn đã làm :) Ngoài ra, VS2010 C + + trình biên dịch bây giờ thực thi chính() của chữ ký (iow, mã trên không còn biên dịch). – Alan
Thử đóng cấu trúc bằng dấu chấm phẩy. Xem nếu điều đó thay đổi hành vi của trình biên dịch. Nó thực sự có thể là một lỗi trình biên dịch. –