参考2011 年 4 月 12 日发布的 ISO/IEC 9899:201x 编程语言 - C的 N1570 委员会草案,应该有一个函数timespec_get()(参见 7.27.2.5)。
但当使用 编译以下代码片段时,MinGW gcc 版本 8.2.0 返回warning: implicit declaration of function 'timespec_get', 和:error: 'TIME_UTC' undeclaredgcc -std=c11 snippet.c
#include <time.h>
int main() {
struct timespec tstart;
timespec_get(&tstart, TIME_UTC);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
这是为什么?
小智 0
除了 之外-std=c11,您还应该使用-D_UCRT编译器和-lucrt链接器的选项。有有效的 CMakeLists.txt 和 cmake 调用
$ cat CMakeLists.txt
cmake_minimum_required (VERSION 3.10)
project(timespec_get)
set(EXE_NAME test)
set(MAIN_SOURCES
${PROJECT_SOURCE_DIR}/src/test.c
)
add_executable(${EXE_NAME} ${MAIN_SOURCES})
if (${MINGW})
set(CMAKE_C_FLAGS "-W -Wall -Wextra -std=c11 -D_UCRT")
target_link_libraries(${EXE_NAME} -lucrt)
else ()
set(CMAKE_C_FLAGS "-W -Wall -Wextra -std=c11")
endif ()
Run Code Online (Sandbox Code Playgroud)
cmake 调用:
cmake -DCMAKE_TOOLCHAIN_FILE=/usr/share/mingw/toolchain-mingw64.cmake
Run Code Online (Sandbox Code Playgroud)
和结果
$ make
[ 50%] Building C object CMakeFiles/test.dir/src/test.c.obj
[100%] Linking C executable test.exe
[100%] Built target test
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1322 次 |
| 最近记录: |