c11:使用通用的raise SIGSEGV
这是我的代码,我尝试从 这是我的CMakeLists.txtc11:使用通用的raise SIGSEGV,c,macros,c11,C,Macros,C11,这是我的代码,我尝试从 这是我的CMakeLists.txt cmake_minimum_required(VERSION 3.3) project(c) set(CMAKE_C_COMPILER /usr/bin/gcc-4.9) set(CMAKE_CXX_COMPILER /usr/bin/g++-4.9) set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11") set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std
cmake_minimum_required(VERSION 3.3)
project(c)
set(CMAKE_C_COMPILER /usr/bin/gcc-4.9)
set(CMAKE_CXX_COMPILER /usr/bin/g++-4.9)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
字符串literal“smth”
衰减为char*
类型的指针,该指针将被转换为\u Generic的默认子句。您得到的值为0,因此您的代码相当于
puts(0);
这没有任何意义,会导致你的程序崩溃。在里面放一个
常量
,这样我就可以问心无愧地投票了。@Bathsheba但是编辑使答案不正确char*
(由于从char[N]
转换而来)是正确的类型。我将把它放回去,并表示歉意。编辑文章:为了挑剔,文本本身的类型是char[5]
,然后会衰减为指向char的指针。
cmake_minimum_required(VERSION 3.3)
project(c)
set(CMAKE_C_COMPILER /usr/bin/gcc-4.9)
set(CMAKE_CXX_COMPILER /usr/bin/g++-4.9)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -std=c11")
set(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++11")
puts(0);