c99相关内容

为什么不推荐使用 fgets 函数?

来自GNU C 编程教程: fgets(“文件获取字符串")函数类似于gets功能.此函数已弃用 -- 这意味着它已过时强烈建议您不要使用它——因为它是危险的.这是危险的,因为如果输入数据包含空值性格,你看不出来.除非你知道数据,否则不要使用 fgets不能包含空值.不要用它来读取用户编辑的文件因为,如果用户插入空字符,您应该正确处理或打印清晰的错误信息.一直使用如果可以,getline 或 ..
发布时间:2021-12-29 12:21:36 其他开发

不使用c99标准用bool编译c代码

我尝试在 C 中使用 bool 变量编译代码,并且我已经包含了 stdbool 头文件,但是当我编译它时,我没有指定我想用 c99 标准编译它(所以它被编译ANSI C 标准),但它仍然有效.我想知道为什么会这样?这是代码: #include #include int main() {字符名称[20];printf("你叫什么名字?");获取(名称);printf("很高兴认识你 %s.\n", ..
发布时间:2021-12-26 18:24:12 其他开发

在 GCC 或 Cygwin 中创建 DLL?

我需要帮助将脚本(“iterator.c")编译成 DLL.我不能使用 VS2010,因为它不支持在 C99 标准中添加到 C 的功能(我使用的是“complex.h",但 VB 不支持它). 我一直在寻找替代品,但我发现的只是 GCC,我不知道如何安装/使用(实际上,我花了半个小时阅读文档,但我没有甚至了解我应该如何安装它)和 Cygwin,我已经安装了它,但我也不知道如何使用.另外,我已 ..
发布时间:2021-12-25 16:01:30 其他开发

C99 布尔数据类型?

什么是 C99 布尔数据类型以及如何使用它? 解决方案 Include 标题 #include int main(void){布尔 b = 假;} 宏true 和false 分别扩展为1 和0. Section 7.16 布尔类型和值 1 标题 定义了四个宏. 2 宏 布尔扩展为 _Bool. 3 其余三个宏适用于#if 预处理指令.他们是 ..
发布时间:2021-12-25 13:05:14 其他开发

结构位域最大大小(C99,C++)

位结构域的最大位宽是多少? struct i { long long i:127;} 我可以在 struct 中定义一个位域,位域的大小最大为 128 位、256 位或更大吗?有一些超宽向量类型,例如 sse2(128 位)、avx1/avx2(256 位)、avx-512(下一个至强融核为 512 位)寄存器;以及 gcc 中的 __int128 等扩展. 解决方案 C99 §6.7 ..
发布时间:2021-12-23 17:12:31 C/C++开发

GNU 语句表达式的编译器支持

哪些现代编译器支持 Gnu 语句表达式(C 和 C++ 语言).我应该使用哪些版本的语句表达式? 语句表达式类似于 ({ code; code; retval }): int b=56;int c= ({int a; a=sin(b); a}) 我已经知道一些这样的编译器: GCC >=3 Clang/LLVM >= ? 英特尔 C++ 编译器 >= 6.0(Linux 版本, ..
发布时间:2021-12-22 18:35:07 其他开发

在 Visual Studio 中是否有在 C99 和 C11 C 标准之间切换的选项?

我是 Visual Studio 环境的新手,我使用的是 VS2017 Pro.我想用 C 编写简单的程序并使用 c99 和 c11 标准编译.在 Visual Studio 中,我只能找到 C++ 标准的编译器开关. 我们如何告诉 Visual Studio 环境我们要使用 c99 和 c11 C 标准编译当前代码. 解决方案 Visual C++ 支持的唯一“模式"是:/std: ..
发布时间:2021-12-22 18:34:36 其他开发

在 MS Visual C++ 中启用 VLA(可变长度数组)?

如何启用 VLA、C99 中定义的可变长度数组、MS Visual C++ 或根本不可能的使用? 是的,我知道 C++ 标准基于 C89,并且 VLA 在 C89 标准中不可用,因此在 C++ 中不可用,但 MSVC++ 也应该是 C 编译器,一种可以打开的行为使用/TC 编译器参数(Compile as C Code (/TC)).但是这样做似乎并没有启用 VLA,并且编译过程在构建为 C ..
发布时间:2021-12-22 18:14:22 其他开发

C 中数组索引的正确类型是什么?

C99 中的数组索引应该使用什么类型?它必须适用于 LP32、ILP32、ILP64、LP64、LLP64 等.它不必是 C89 类型. 我找到了 5 个候选人: size_t ptrdiff_t intptr_t/uintptr_t int_fast*_t/uint_fast*_t int_least*_t/uint_least*_t 有简单的代码可以更好地说明问题.在 ..
发布时间:2021-12-21 23:18:05 其他开发

C99 中如何为隐式定义的多维数组分配内存?

我正在尝试编写一个 C99 程序,并且我有一个隐式定义的字符串数组: char *stuff[] = {"hello","pie","deadbeef"}; 由于没有定义数组维度,每个字符串分配了多少内存?是否所有字符串都分配了与定义中最大字符串相同数量的元素?例如,下面的代码是否等同于上面的隐式定义: char stuff[3][9];strcpy(东西[0],“你好");strcpy(东 ..
发布时间:2021-12-21 13:15:33 其他开发

如何将 printf() 包装到函数或宏中?

这听起来像是一个面试问题,但实际上是一个实际问题. 我正在使用嵌入式平台,并且只有这些功能的等效项: printf() snprintf() 此外,printf() 实现(和签名)在不久的将来可能会发生变化,因此对它的调用必须驻留在单独的模块中,以便以后易于迁移. 鉴于此,我可以将日志调用包装在某个函数或宏中吗?目标是我的源代码在一千个地方调用了 THAT_MACRO(" ..
发布时间:2021-12-19 10:06:57 其他开发

是否有允许结构重新排序的 GCC 关键字?

我知道为什么 GCC 默认不重新排序结构的成员,但我很少编写依赖于结构顺序的代码,所以有什么方法可以标记我的结构以自动重新排序? 解决方案 以前的 GCC 版本具有 -fipa-struct-reorg 选项 允许在 -fwhole-program + -combine 中重新排序结构 模式. -fipa-struct-reorg 执行结构重组优化,改变类 C 结构布局,以更好 ..
发布时间:2021-12-18 23:24:17 其他开发

结构中的匿名联合不在 c99 中?

这是我遇到的问题的非常简化的代码: 枚举 node_type {t_int, t_double};结构 int_node {整数值;};结构双节点{双倍价值;};结构节点{枚举 node_type 类型;联合{结构 int_node int_n;struct double_node double_n;};};int main(void) {结构 int_node i;i. 值 = 10;结构节点 ..
发布时间:2021-12-18 23:02:21 其他开发

C99 'restrict' 关键字的实际用法?

我浏览了一些文档和问题/答案,看到有人提到了.我读了一个简短的描述,说明它基本上是程序员的一个承诺,即不会使用指针指向其他地方. 谁能提供一些实际案例来证明它的实际使用价值? 解决方案 restrict 表示指针是唯一访问底层对象的东西.它消除了指针别名的可能性,使编译器能够进行更好的优化. 例如,假设我有一台带有特殊指令的机器,可以将内存中的数字向量相乘,我有以下代码: v ..
发布时间:2021-12-18 22:59:42 其他开发

C、C99、ANSI C 和 GNU C 之间有什么区别?

我已经开始在 codechef 上进行编程练习,并且已经被 C 和 C99 之间的差异所迷惑.C在这里是什么意思?是 C89 吗?检查此提交底部的语言.它包含 C 和 C99. 我在 Internet 上发现了一种叫做 GNU C 的东西.Linux/unix 系统是否有不同的 C?这些是否符合 ANSI 的 C 标准?我也在一些地方读过“C99严格".这是什么? 是否还有其他不同的 ..
发布时间:2021-12-18 22:47:24 其他开发

Microsoft Visual Studio 2010 是否支持 c99?

我想知道 Microsoft Visual Studio 2010 是否支持 C99.如果没有,我如何使用像 intptr_t 和 uintptr_t 这样的标准类型? 解决方案 据我所知,Visual Studio 2010 不支持 C99.要使用 stdint.h 中的类型,您必须使用 typedef.一种跨平台的方式来做到这一点: #ifdef _WIN32typedef 有符号短 ..
发布时间:2021-12-14 18:59:28 其他开发

定义中函数标题后的 C 变量声明

在阅读一些 FreeBSD 源代码时(参见:radix.h 行 158-173),我发现变量声明跟在定义中的“函数标题"之后. 这在 ISO C (C99) 中有效吗?什么时候应该在生产代码中完成而不是仅仅在“函数标题"中声明变量?为什么要在这里做? 我指的是标题字符串的函数,看起来像这样:int someFunction(int i, int b) { 解决方案 看起来像 K ..
发布时间:2021-12-13 21:25:27 其他开发

当变量被隐藏时收到警告

我通常想避免这样的代码: #include int main(int argc, char *argv[]){整数 n = 3;for (int n = 1; n 如何找到变量的这种用法?这意味着,在同一个函数中,一个“更局部"的变量与一个更全局的变量具有相同的名称? C-标准:C 99 解决方案 gcc 和 clang 都支持 -Wshadow 标志,它会警告变量相互影响.例 ..
发布时间:2021-12-13 21:08:28 其他开发

当前 GCC(尤其是在 Ubuntu 上)的默认 C -std 标准版本是什么?

当我要求查看 cc 的当前版本时,我得到了这个. $ cc --versioncc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2版权所有 (C) 2012 Free Software Foundation, Inc.这是免费软件;请参阅复制条件的来源.没有保修单;甚至不是为了特定目的的适销性或适合性.$ 我想知道使用的是 c89、c90、c99 或 c11 中的哪一 ..
发布时间:2021-12-12 12:02:38 其他开发

Visual Studio 是否支持新的 C/C++ 标准?

我一直在阅读有关 C99 和 C++11 以及所有这些正在添加到语言标准中的非常棒的东西,这些东西有一天可能会很好用.然而,我们目前在 Visual Studio 中编写 C++ 的土地上苦苦挣扎. 标准中的任何新内容是否会被添加到 Visual Studio 中,或者微软是否对添加新的 C# 变体更感兴趣? 编辑:除了已接受的答案,我还找到了 Visual C++ 团队博客: ..
发布时间:2021-12-07 13:42:33 C/C++开发