c99相关内容
来自GNU C 编程教程: fgets(“文件获取字符串")函数类似于gets功能.此函数已弃用 -- 这意味着它已过时强烈建议您不要使用它——因为它是危险的.这是危险的,因为如果输入数据包含空值性格,你看不出来.除非你知道数据,否则不要使用 fgets不能包含空值.不要用它来读取用户编辑的文件因为,如果用户插入空字符,您应该正确处理或打印清晰的错误信息.一直使用如果可以,getline 或
..
我尝试在 C 中使用 bool 变量编译代码,并且我已经包含了 stdbool 头文件,但是当我编译它时,我没有指定我想用 c99 标准编译它(所以它被编译ANSI C 标准),但它仍然有效.我想知道为什么会这样?这是代码: #include #include int main() {字符名称[20];printf("你叫什么名字?");获取(名称);printf("很高兴认识你 %s.\n",
..
我需要帮助将脚本(“iterator.c")编译成 DLL.我不能使用 VS2010,因为它不支持在 C99 标准中添加到 C 的功能(我使用的是“complex.h",但 VB 不支持它). 我一直在寻找替代品,但我发现的只是 GCC,我不知道如何安装/使用(实际上,我花了半个小时阅读文档,但我没有甚至了解我应该如何安装它)和 Cygwin,我已经安装了它,但我也不知道如何使用.另外,我已
..
什么是 C99 布尔数据类型以及如何使用它? 解决方案 Include 标题 #include int main(void){布尔 b = 假;} 宏true 和false 分别扩展为1 和0. Section 7.16 布尔类型和值 1 标题 定义了四个宏. 2 宏 布尔扩展为 _Bool. 3 其余三个宏适用于#if 预处理指令.他们是
..
位结构域的最大位宽是多少? struct i { long long i:127;} 我可以在 struct 中定义一个位域,位域的大小最大为 128 位、256 位或更大吗?有一些超宽向量类型,例如 sse2(128 位)、avx1/avx2(256 位)、avx-512(下一个至强融核为 512 位)寄存器;以及 gcc 中的 __int128 等扩展. 解决方案 C99 §6.7
..
哪些现代编译器支持 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 版本,
..
我是 Visual Studio 环境的新手,我使用的是 VS2017 Pro.我想用 C 编写简单的程序并使用 c99 和 c11 标准编译.在 Visual Studio 中,我只能找到 C++ 标准的编译器开关. 我们如何告诉 Visual Studio 环境我们要使用 c99 和 c11 C 标准编译当前代码. 解决方案 Visual C++ 支持的唯一“模式"是:/std:
..
如何启用 VLA、C99 中定义的可变长度数组、MS Visual C++ 或根本不可能的使用? 是的,我知道 C++ 标准基于 C89,并且 VLA 在 C89 标准中不可用,因此在 C++ 中不可用,但 MSVC++ 也应该是 C 编译器,一种可以打开的行为使用/TC 编译器参数(Compile as C Code (/TC)).但是这样做似乎并没有启用 VLA,并且编译过程在构建为 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 有简单的代码可以更好地说明问题.在
..
我正在尝试编写一个 C99 程序,并且我有一个隐式定义的字符串数组: char *stuff[] = {"hello","pie","deadbeef"}; 由于没有定义数组维度,每个字符串分配了多少内存?是否所有字符串都分配了与定义中最大字符串相同数量的元素?例如,下面的代码是否等同于上面的隐式定义: char stuff[3][9];strcpy(东西[0],“你好");strcpy(东
..
这听起来像是一个面试问题,但实际上是一个实际问题. 我正在使用嵌入式平台,并且只有这些功能的等效项: printf() snprintf() 此外,printf() 实现(和签名)在不久的将来可能会发生变化,因此对它的调用必须驻留在单独的模块中,以便以后易于迁移. 鉴于此,我可以将日志调用包装在某个函数或宏中吗?目标是我的源代码在一千个地方调用了 THAT_MACRO("
..
我知道为什么 GCC 默认不重新排序结构的成员,但我很少编写依赖于结构顺序的代码,所以有什么方法可以标记我的结构以自动重新排序? 解决方案 以前的 GCC 版本具有 -fipa-struct-reorg 选项 允许在 -fwhole-program + -combine 中重新排序结构 模式. -fipa-struct-reorg 执行结构重组优化,改变类 C 结构布局,以更好
..
这是我遇到的问题的非常简化的代码: 枚举 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;结构节点
..
我浏览了一些文档和问题/答案,看到有人提到了.我读了一个简短的描述,说明它基本上是程序员的一个承诺,即不会使用指针指向其他地方. 谁能提供一些实际案例来证明它的实际使用价值? 解决方案 restrict 表示指针是唯一访问底层对象的东西.它消除了指针别名的可能性,使编译器能够进行更好的优化. 例如,假设我有一台带有特殊指令的机器,可以将内存中的数字向量相乘,我有以下代码: v
..
我已经开始在 codechef 上进行编程练习,并且已经被 C 和 C99 之间的差异所迷惑.C在这里是什么意思?是 C89 吗?检查此提交底部的语言.它包含 C 和 C99. 我在 Internet 上发现了一种叫做 GNU C 的东西.Linux/unix 系统是否有不同的 C?这些是否符合 ANSI 的 C 标准?我也在一些地方读过“C99严格".这是什么? 是否还有其他不同的
..
我想知道 Microsoft Visual Studio 2010 是否支持 C99.如果没有,我如何使用像 intptr_t 和 uintptr_t 这样的标准类型? 解决方案 据我所知,Visual Studio 2010 不支持 C99.要使用 stdint.h 中的类型,您必须使用 typedef.一种跨平台的方式来做到这一点: #ifdef _WIN32typedef 有符号短
..
在阅读一些 FreeBSD 源代码时(参见:radix.h 行 158-173),我发现变量声明跟在定义中的“函数标题"之后. 这在 ISO C (C99) 中有效吗?什么时候应该在生产代码中完成而不是仅仅在“函数标题"中声明变量?为什么要在这里做? 我指的是标题字符串的函数,看起来像这样:int someFunction(int i, int b) { 解决方案 看起来像 K
..
我通常想避免这样的代码: #include int main(int argc, char *argv[]){整数 n = 3;for (int n = 1; n 如何找到变量的这种用法?这意味着,在同一个函数中,一个“更局部"的变量与一个更全局的变量具有相同的名称? C-标准:C 99 解决方案 gcc 和 clang 都支持 -Wshadow 标志,它会警告变量相互影响.例
..
当我要求查看 cc 的当前版本时,我得到了这个. $ cc --versioncc (Ubuntu/Linaro 4.7.2-2ubuntu1) 4.7.2版权所有 (C) 2012 Free Software Foundation, Inc.这是免费软件;请参阅复制条件的来源.没有保修单;甚至不是为了特定目的的适销性或适合性.$ 我想知道使用的是 c89、c90、c99 或 c11 中的哪一
..
我一直在阅读有关 C99 和 C++11 以及所有这些正在添加到语言标准中的非常棒的东西,这些东西有一天可能会很好用.然而,我们目前在 Visual Studio 中编写 C++ 的土地上苦苦挣扎. 标准中的任何新内容是否会被添加到 Visual Studio 中,或者微软是否对添加新的 C# 变体更感兴趣? 编辑:除了已接受的答案,我还找到了 Visual C++ 团队博客:
..