ansi-c相关内容

为什么 ANSI C 没有命名空间?

对于大多数语言来说,拥有命名空间似乎是轻而易举的事.但据我所知,ANSI C 不支持它.为什么不?是否有计划将其包含在未来的标准中? 解决方案 C 确实有命名空间.一种用于结构标签,一种用于其他类型.考虑以下定义: struct foo{诠释一个;};typedef 结构栏{诠释一个;} 富; 第一个有tag foo,后一个用typedef做成类型foo.仍然没有发生名称冲突.这是因为 ..
发布时间:2022-01-14 22:53:17 其他开发

ANSI-C 中的静态是什么意思

可能的重复: 什么是“静态"?在 C 程序中是什么意思? static 关键字在 C 中是什么意思? 我使用的是 ANSI-C.我在几个代码示例中看到,它们在变量和函数前使用 static 关键字.与变量一起使用的目的是什么?和函数一起使用的目的是什么? 解决方案 简单回答一下,static关键字在定义变量时有两种用法: 1- 使用 static 关键字在文件范围内定义 ..
发布时间:2022-01-05 20:11:56 其他开发

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 其他开发

char* var 的区别;和 char *var;?

只是想知道两者之间是否有任何区别: char* var;字符 *var; 还是只是喜好问题(间距)? 解决方案 在这种情况下没有区别.但是,您应该更喜欢 char *var;. 这是因为 * 与变量名称的关联更紧密,并且不是基本类型的一部分.例如,如果您这样做: char* a, b; 你拥有的是a,一个指向char 的指针,以及b,一个char.这令人困惑!由于 * 字符更 ..
发布时间:2021-12-13 13:13:05 其他开发

如何将枚举类型变量转换为字符串?

如何让 printf 显示枚举类型变量的值?例如: typedef enum {Linux, Apple, Windows} OS_type;OS_type myOS = Linux; 而我需要的是类似 printenum(OS_type, "我的操作系统是 %s", myOS); 必须显示字符串“Linux",而不是整数. 我想,首先我必须创建一个值索引的字符串数组.但我不知道这是 ..
发布时间:2021-12-02 08:28:06 C/C++开发

使用 realloc 更改 c 中数组的大小

我在 ansi-C 中遇到了问题.我正在尝试在数组上使用 C 进行堆栈.但是我遇到了 pop 和 push 函数的问题——我不知道如何改变数组的大小.我想我可以使用函数 realloc() 以某种方式实现它,但我不知道如何. 有人可以帮忙吗? 解决方案 这是一个示例代码: #include #include int main(int argc, char **argv){int * ..
发布时间:2021-07-05 18:46:43 其他开发

为什么在c99或c90模式下支持_Generic关键字?

我编写了一个简单的C程序来测试 _Generic 关键字的可用性。 int main (){ int _Generic; } 我用 gcc-5.3.1运行了程序>和 clang-3.8.0 在Ubuntu上进行编译。 很明显,该程序在最新的c11标准中编译时会产生错误。 但是,当使用 -std = c90 和 -std = c99 标志进行编译时, ..
发布时间:2020-09-28 04:23:35 其他开发

在C89中是否有任何建立/标准化的方法来使用固定宽度的整数?

某些背景: 标头 stdint.h 是C语言的一部分C99以来的标准.它包括确保有符号和无符号的8位,16位,32位和64位长整数的typedef.但是,此标头不是C89标准的一部分,而且我还没有找到任何直截了当的方式来确保我的数据类型具有已知的长度. 进入实际主题 以下代码是SQLite(用C89编写)如何定义64位整数的方法,但我认为它没有说服力.也就是说,我认为它不会在所有 ..
发布时间:2020-09-21 05:43:31 其他开发

我应该使用"-ansi"吗?或显式"-std = ..."作为编译器标志?

我已经阅读 ANSI C与ISO C并不完全相同,并且编译器对"-ansi"的含义可能有所不同. (gcc将其映射到C90,将clang映射到C89)目前,我倾向于在"-ansi"上使用"-std = ...",因为这会明确显示所使用的标准.由于我对在Linux,Windows和MAC上进行编译特别感兴趣,因此我担心某些编译器无法理解"-std = ..."而不是"-ansi".那么,使用一个相对 ..
发布时间:2020-06-20 18:32:26 其他开发

pow(1,0)返回0?

为什么这样做: printf("%d\n", pow(1,0)); /* outputs 0 */ 返回0?我希望它返回1. 解决方案 pow() 返回类型.您需要使用%f格式说明符来打印double. 为提供的参数类型使用不合适的格式说明符会导致不确定的行为.检查C标准N1570(C11)的第7.2.1.6.1节. (是的,这没有专门针对C89,恕我直言) ..
发布时间:2020-06-20 18:32:22 其他开发

将字符串插入C中的另一个字符串

我正在实现一个函数,给定一个字符串,一个字符和另一个字符串(因为现在我们可以将其称为“子字符串");将子字符串放在字符在字符串中的任何位置. 为了更好地解释我,给定这些参数,这就是函数应该返回的内容(伪代码): func ("aeiou", 'i', "hello") -> aehelloou 我正在使用string.h lib中的一些函数.我已经对其进行了很好的测试: cha ..
发布时间:2020-05-05 12:40:53 其他开发

C,C99,ANSI C和GNU C有什么区别?

我已经开始通过 codechef 进行编程练习,并已被C和C99之间的区别所困惑。 C是什么意思?是C89吗?检查此提交底部的语言。它包含C和C99。 我在互联网上发现了一些名为GNU C的东西。对于linux / unix系统有不同的C吗? ANSI是否符合C标准?我也在一些地方读过“C99严格”。这是什么? 有没有其他不同的C标准在使用?有没有什么叫做C 4.3.2或者它是目前使用 ..
发布时间:2018-04-20 15:47:12 其他开发

C程序对三个命令执行管道

我必须编写一个程序,执行与 du |相同的操作排序|头在命令行会做,但我被卡住了,我的程序不工作。现在的输出是 112。,程序不会终止。请帮助,我不知道该怎么办! int main(void){ int fd [2]; int fd1 [2]; int pid; if(pipe(fd)== -1){ perror(“Pipe”); exit(1); } ..
发布时间:2016-12-20 09:45:22 其他开发

元语言代码生成包装结构为ANSI-C和C#结构体

我试图寻找可用于定义结构和获取/设置代码成员“元语言”。美中不足的是,结构代码已经存在,而这个“元语言”将作为位对位替换原有的手工编码结构,以允许生成描述结构的标头。的一点是,这些结构体被用作一个C#应用程序和嵌入式设备之间的协议的一部分(未基于Linux,认为更小,更约束像PIC或C 1-10。) 的元语言将充当 文档的结构成员 生成C#结构和实施的get / set操作 生成包装A ..
发布时间:2016-09-28 15:06:19 C#/.NET

字符串数组转换

我有以下的code: 的char *数组1 [3] = { “你好”, “世界”, “那里。” };结构locator_t { 焦炭**吨; INT LEN; }定位器[2] = { { 数组1, 10 } }; 它编译与“海湾合作委员会-Wall -ansi -pedantic”OK。但是,与其他工具链 ..
发布时间:2016-08-22 16:47:21 C/C++

字符串数组初始化

这是另一个问题我有一个延续。 考虑以下code: 的char * HI =“你好”;的char *数组1 [3] = { 喜 “世界”, “那里。” }; 这并不编译令我惊讶(显然我不知道C语法以及我认为),并生成以下错误:错误:初始元素不是常数 如果我改变的char *成char []它编译罚款:喜烧焦[] =“你好”;的char *数组1 [3] = { ..
发布时间:2016-08-22 16:41:41 C/C++

是否有ANSI C和ISO C之间的差异?

据我了解,有两个是ANSI标准和C.的ISO标准有没有这两个标准之间的差异?如果是这样,它们是什么?如果没有一个差那么什么是有两个标准的意义呢? 解决方案 1990年: 在1990年,ANSI C标准(有一些小的修改)被标准化为ISO / IEC 9899通过国际组织。这个版本有时被称为C90。因此,术语“C89”和“C90”是指基本上相同的语言 来源,情况是类似的,但转回的 ..
发布时间:2016-08-21 20:24:01 C/C++