您所谓的“源类型参数”称为功能测试宏,并且明确要求在包含任何标准标头之前就对其进行定义(如果已定义)。
这在XSH 2.2.1 POSIX.1符号中指定:
符合POSIX的应用程序应确保在包含任何报头之前已定义功能测试宏_POSIX_C_SOURCE。
...
符合XSI的应用程序应确保在包含任何报头之前,将功能测试宏_XOPEN_SOURCE定义为值700。
在为Linux手册页feature-test-macros
还明确规定了通用的标准及其扩展这个要求:
注意:为了有效,必须在包含任何头文件之前定义功能测试宏
您无法重新定义和重新包含标头来更改内容,实际上,在标头(甚至不同的,看似无关的标头)之间定义或取消定义/重新定义标头可能会完全破坏事情。
您所谓的“源类型参数”称为功能测试宏,并且明确要求在包含任何标准标头之前就对其进行定义(如果已定义)。
这在XSH 2.2.1 POSIX.1符号中指定:
符合POSIX的应用程序应确保在包含任何报头之前已定义功能测试宏_POSIX_C_SOURCE。
...
符合XSI的应用程序应确保在包含任何报头之前,将功能测试宏_XOPEN_SOURCE定义为值700。
在为Linux手册页feature-test-macros
还明确规定了通用的标准及其扩展这个要求:
注意:为了有效,必须在包含任何头文件之前定义功能测试宏
您无法重新定义和重新包含标头来更改内容,实际上,在标头(甚至不同的,看似无关的标头)之间定义或取消定义/重新定义标头可能会完全破坏事情。