Trong chương trình c
nàyCó phải tiêu chuẩn cho #if để giả sử các hằng số biểu tượng không xác định là 0 không?
#include<stdio.h>
int main()
{
#if UnDefinedSymbolicConstant==0
printf("UnDefinedSymbolicConstant is equal to 0\n ");
#else
printf("UnDefinedSymbolicConstant is not equal to 0\n");
#endif
return 0;
}
UnDefinedSymbolicConstant vẫn chưa #define
bất cứ nơi nào, nó vẫn đã được giả định là 0 và cung cấp cho các output on gcc-4.3.4
như:
UnDefinedSymbolicConstant is equal to 0
vậy, Đây có phải là hành vi chuẩn hoặc nó hoạt động như thế này chỉ trong gcc?
Một cách hay để tìm hiểu xem nội dung nào đó có chuẩn hay không là -std = c99 -pantic. Điều này sẽ tắt tất cả các tiện ích mở rộng gcc. Nếu không có chúng, gcc sẽ phù hợp với tiêu chuẩn. – Lundin
Bạn có chắc chắn '-std = c99 -pedantic' bắt tất cả các cấu trúc không chuẩn không? Nó dường như được dự định, nhưng nếu tôi không nhầm, nó vẫn còn nhớ một số. Về cơ bản tất cả những gì bạn có thể dựa vào '-std = c99' để làm là tránh cho phép mọi thứ xung đột với hành vi được chỉ định tiêu chuẩn, nhưng nó không nhất thiết ngăn bạn làm những việc không xung đột nhưng không được chỉ định bởi chuẩn mực. '-pedantic' được dự định để cảnh báo bạn về cái sau nhưng tôi không tin là nó đã hoàn thành. –