c99相关内容

具有ncurses的C99 UTF8字符

我正在玩 ncurses ,遇到了问题.我想用Unicode块字符(U + 2588,█)绘制一个简单的框,但是我无法使其正确显示: 如您所见,我想要的字符显示为〜H . 我遵循了中的指示,类似的问题开球.最小的工作示例: #include#includeint main(){setlocale(LC_ALL,“");//必须在init ..
发布时间:2021-04-21 18:32:12 其他开发

具有不完整声明的C函数

我可以使用 gcc -std = C99 -Wall 来构建没有错误的示例: void dummy(){}int main(void){dummy(1、2、3);虚拟(120,144);} 反汇编显示该函数确实被调用了两次: 主要:.LFB1:.cfi_startprocpushq%rbp.cfi_def_cfa_offset 16.cfi_offset 6,-16movq%rsp,%r ..
发布时间:2021-04-21 18:32:08 其他开发

在OpenCL中将函数作为参数传递

是否可以将函数指针传递给OpenCL 1.2中的内核?我知道它可以在C语言中完成,但是我不知道如何在OpenCL的C语言中完成. 编辑:我想做这篇文章中描述的相同的事情: ..
发布时间:2021-04-21 18:32:06 其他开发

如果缺少编译指示STDC FENV_ACCESS,是否表示默认的舍入模式?

我对C标准的解释有疑问,C标准的最新草案摘自 http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2454.pdf . 标准评估 该标准定义了 pragma STD FENV_ACCESS 和状态(7.6.1p2): FENV_ACCESS编译指示提供了一种方法,可以在程序可能会通知实施时访问浮点环境以测试浮点状态标志或在非默认情况下运 ..
发布时间:2021-04-21 18:32:03 其他开发

用复合文字初始化变量

将以下代码放在作用域/函数中时,无法编译,编译器将产生错误,指出以下内容: initializer元素不是常量.在GCC和MSVC上都会发生这种情况. 静态const char * const * const list =(const char * const []){"abc","def","xyz"}; 但是,如果将代码放在任何函数之外,并且将 list 初始化为具有静态存储持续时间的全 ..
发布时间:2021-04-21 18:32:00 其他开发

是在C11中未定义来修改函数调用的结果,还是在下一个序列点之后对其进行访问?

在C99§6.5.2.2p5中,有一个小小的宝石,由我加粗,以强调该问题: 如果表示被调用函数的表达式具有指向返回对象类型的函数的类型指针,则函数调用表达式与该对象类型具有相同的类型,并具有6.8.6.4中指定的值.否则,函数调用的类型为void.如果试图修改函数调用的结果或在下一个序列点之后访问它,则行为是不确定的. 这使我们可以返回 structs ,例如: struct fo ..
发布时间:2021-04-21 18:31:57 其他开发

如何获得浮点值的小数部分?

我有一个类型为 float 的变量 x ,我需要它的小数部分.我知道我可以用 x-floorf(x)或 fmodf(x,1.0f) 我的问题:其中一个总是比另一个更可取吗?它们实际上是一样的吗?我可能会考虑第三种选择吗? 注意: 如果答案取决于我使用的处理器,则将其设置为x86_64,并且如果您可以详细说明其他会很好的处理器. 请确保并参考 x 的负值上的行为.我不介意 ..
发布时间:2021-04-21 18:31:54 其他开发

GCC警告我指令输出被截断

我已经用clang编译了一段时间了,但是现在我回到了GCC(8.3),我收到了很多非致命的警告. 例如,我有以下代码行以固定宽度的格式“(度)(分钟).(秒)(W | E)"打印给定的经度.不过,在此之前,我有一些代码可以计算度,分钟和 seconds ,同时确保所有值都是合理的(例如,-≤90≤ degrees ≤90,无论如何). 因此,它可以编译并完美运行: snprintf ..
发布时间:2021-04-21 18:31:51 其他开发

每个C标准中带空括号的函数指针的含义是什么?

回答此和这个问题说,形式为 return-type(* pointer)()的函数指针是指向带有任意数量参数的函数的指针,尽管后者表示它们在C11中已作废 在具有GCC的i386系统上,“额外"由于堆栈帧的工作方式,在调用中传递给空括号类型d函数指针的参数将被忽略.例如, /* test.c */#includeint foo(int arg){return arg;} ..
发布时间:2021-04-21 18:31:42 其他开发

如何将无穷大值传递给函数并测试结果

我有这个功能: #include复数双精度f(复数双精度x,复数双精度y){返回x * y;} 我想用 x = inf + i inf 和 y = i inf 来调用它,看看结果是什么.我尤其要测试结果是否为无穷大值(应为无穷大)或为 NaN + iNaN .这样做的原因是要测试不同的C编译器. 您如何用C语言做到这一点? 解决方案 我也会添加一个中间 ..
发布时间:2021-04-21 18:31:39 其他开发

为什么C99标准的作者不为浮点类型的大小指定标准?

我注意到在Windows和Linux x86上,float是4字节类型,double是8,但是long double在x86和x86_64上分别是12和16.C99应该打破具有特定整数大小的障碍. 最初的技术限制似乎是由于x86处理器不能处理80位以上的浮点运算(加上2个字节以进行四舍五入),但是为什么与int类型相比标准不一致?为什么他们至少不进行80位标准化? 解决方案 C语言没 ..
发布时间:2021-04-21 18:31:32 其他开发

UL后缀vs uint32_t转换

我必须这样定义常量: #define MY_CONSTANT 0xBEEF 我想确保我的常量将被视为32位. 我可以像这样使用(uint32_t)转换: #define MY_CONSTANT(uint32_t)0xBEEF 或者像这样的UL后缀: #define MY_CONSTANT 0xBEEFUL 这两个版本完全相同吗? 我会说不,因为UL等同于 uns ..
发布时间:2021-04-21 18:31:29 其他开发

为什么我不能“默认"?或"goto case x;";交换机选择结构中?

C11的6.8.1节或 C89 似乎都表明 default 和 case x (其中 x 是一些恒定表达)是带有标签的语句的示例,以及与 goto 一起使用的 identifier:样式的标签. 我知道我可以在 default:或 case x:标签之后直接放置一个 identifier:样式的标签.这不是这个问题的意思.我对禁止这种行为背后是否有任何实际理由感到好奇. 如果可以在 s ..
发布时间:2021-04-21 18:31:26 其他开发

是否可以为移动GC实现生成带有类型信息的ansi C函数?

我想知道有什么方法可以将类型信息添加到生成的C方法中.我正在将高级编程语言转换为C,我想添加一个移动的垃圾收集器.但是,要做到这一点,我需要方法变量具有类型信息,否则我可以修改看起来像指针的原始值. 一种显而易见的方法是将所有(原始和非原始)变量封装在一个结构中,该结构具有一个额外的(枚举)变量来键入信息,但是这会导致内存和性能开销,因此,转码的含义是嵌入式平台.如果我要接受内存开销,那么显 ..
发布时间:2021-04-21 18:31:23 其他开发

C:将int转换为size_t

在32位和64位linux平台上,在C99中将 int 转换/转换为 size_t 的正确方法是什么? 示例: int hash(void * key){//...}int main(int argc,char * argv []){size_t size = 10;无效*项目[大小];//...无效*键= ...;//这是从哈希函数转换返回的int的正确方法//为size_t?size ..
发布时间:2021-04-21 18:31:20 其他开发

如何在带有终端的gcc中启用c99模式

我想在gcc编译器中激活c99模式,以便在本论坛的其他帖子中阅读 -std 应该等于 -std = c99 ,但我不知道不知道如何使用命令行将其设置为该值,所以请帮忙. 解决方案 使用以下命令编译: gcc -std = c99 -o outputfile sourcefile.c gcc --help 列出了一些选项,有关选项的完整列表,请参考此处. 使用 make 时,可 ..
发布时间:2021-04-21 18:31:17 其他开发

如何在Windows上强制printf输出[-] inf或[-] infinity?

C99标准说: 表示无穷大的double参数在以下其中一个中转换样式[-] inf或[-] infinity-实现的样式是实现定义的.(第278页,第7.19.6.1节) 不幸的是,在Windows上: printf(“%f \ n",1.0f/0.0f) 产生:1.#INF00 这是一个问题,因为某些应用程序希望使用符合C标准的字符串作为输入(C#的Double.Par ..
发布时间:2021-04-21 18:31:14 其他开发

sizeof(int)== 1的实现能否“完全符合"?

根据 C标准, fgetc 以 unsigned char 值的形式返回,“转换为 int "(该引用来自C标准,表明确实存在转换)./p> 当 sizeof(int)== 1 时,许多 unsigned char 值超出范围.因此,某些 unsigned char 值有可能最终被转换为 int 值(转换结果为),尽管文件实际上没有处于错误或文件结束状态. 我惊讶地发现这样的实现实际上存在 ..
发布时间:2021-04-21 18:31:10 其他开发

如何在C中返回匿名结构?

尝试一些代码,我意识到下面的代码可以编译: struct {int x,y;} foo(void){} 似乎我们正在定义一个名为 foo 的函数,该函数返回匿名的 struct . > 仅使用我的编译器进行编译还是合法的C(99)? 如果是这样,那么return语句的正确语法是什么?如何正确地将返回值分配给变量? 解决方案 您要返回的结构不是匿名结构.C标准将匿名结构定义 ..
发布时间:2021-04-21 18:31:03 其他开发