问题标签 [ansi-c]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c - 错误:初始化元素在加载时不可计算
我有一个采用结构的函数,我试图将其变量存储在数组中:
但是gcc -Wall -ansi -pedantic-errors -Werror
我收到以下错误:
初始化元素在加载时不可计算
在我看来很好,有什么问题?
c++ - ANSI C 等效于 try/catch?
我有一些我正在使用的 C 代码,并且在代码运行时发现错误,但是关于如何进行正确的 try/catch 的信息很少(如在 C# 或 C++ 中)。
例如在 C++ 中,我会这样做:
但在 ANSI C 中我有点迷茫。我尝试了一些在线搜索,但我没有看到有关如何实现它的足够信息/我想我会在这里问,以防有人能指出我正确的方向。
这是我正在使用的代码(相当简单的递归方法),并希望使用 try/catch(或等效的错误处理结构)进行包装。
然而,我的主要问题只是如何在 ANSI C 中进行尝试/捕获……实现/示例不必是递归的。
c - ANSI C 与其他 C 标准
在我使用过的几个编译器(gcc
除了各种版本之外)我得到一个C99 mode
错误,比如int i
在 for 循环表达式内部而不是在它之前声明(如果我不使用该std=c99
选项)。阅读此处后,我了解gcc
options -ansi
、-std=c89
和-std=iso9899:1990
all 评估为 ANSI C 标准,但我不明白为什么/如果我应该选择c89
标准而不是更新的标准c99
(我假设这是最新的)。
此外,我看到iso
了 C 语言类型标准的多个版本,其中第一个版本(据我所知)是 ANSI 标准的直接端口。 可以肯定地说这iso
将更新他们的 C 标准,但 C 的原始 ANSI 标准将始终相同吗?
奖金问题:
我实际上可以自己解决这个问题,我只是还没有花时间去做,所以如果有人知道他们的头顶,那就太好了,否则没什么大不了的,我稍后会弄清楚:)
我有一本相当新的书The C Programming Language (ANSI)
。我的书总是显示这样的循环:
但是很多人(大多数人的小指上都有更多的编程天赋)这样写他们的 for 循环:
说如果我以第一种方式编写循环,那么i
整个函数都应该可以访问它是否正确,但是如果我以第二种方式编写它,那么无论我用什么标准编译,i
都只能由 for 循环访问?问同样问题的另一种方法是,如果我使用c89
标准编译i
,整个函数都可以访问两个 for 循环,如果我使用c99
标准编译,整个函数i
可以访问第一个 for 循环i
的第二个 for 循环只能由 for 循环访问?
c - 以数字为变量的字符串,Unix C 问题
我想使用 abc1 ,abc2, abc3,abc4,..abc100, 作为结构变量名。但是不知道怎么设置?不知道。
有人可以帮帮我吗?确实谢谢。
c - ANSI C 和 ISO C 之间有什么区别吗?
我知道 C 有 ANSI 标准和 ISO 标准。这两个标准之间有什么区别吗?如果是这样,它们是什么?如果没有区别,那么有两个标准有什么意义呢?
c - 为什么 ANSI C 没有命名空间?
对于大多数语言来说,拥有命名空间似乎是轻而易举的事。但据我所知,ANSI C 不支持它。为什么不?是否有计划将其包含在未来的标准中?
c - ANSI-C 中的静态是什么意思
可能重复:
C 程序中的“静态”是什么意思?
static
C 中的关键字是什么意思?
我正在使用 ANSI-C。我在几个代码示例中看到过,它们static
在变量前面和函数前面都使用了关键字。使用变量的目的是什么?使用函数的目的是什么?
c++ - 如何将枚举类型变量转换为字符串?
如何使 printf 显示枚举类型的变量的值?例如:
我需要的是类似
必须显示字符串“Linux”,而不是整数。
我想,首先我必须创建一个值索引的字符串数组。但我不知道这是否是最美丽的方式。有可能吗?
c++ - C++ 标准,有点困惑?
我知道该标准于 1998 年获得批准,并且在 2003 年进行了修复标准中某些缺陷的更新(ISO 标准),尽管我不确定 C++98 和 ANSI C 标准的关系。
我记得不止一次阅读 C++ 1998 标准是基于 C 标准之一,我会假设 ANSI C89 而不是 99,这是正确的吗?
我也可以正确假设 C++0x 是下一个“成为”标准的官方别名,而 C++03..11..xx 只是朝着 C++0x 标准工作的某些“更新”, C++11 只是发生在 11 年的更新吗?
对于我的一生,我在网上找不到太多东西,例如搜索基于什么和“C++ 标准及其引入的列表”的内容几乎一无所获,除非我只需要一个新鲜的头脑来找到其他任何东西.
谢谢你。
c - fopen 一切 - 这可能吗?
我曾经对 windows 进行编程,但我想尝试制作一个跨平台的应用程序。如果你不介意的话,我还有一些问题:
问题 1
有没有办法打开 UNICODE\ASCII 文件并使用裸 ANSI C 自动检测它的编码。MSDN 说如果我使用 fopen() 可以在各种 UNICODE 格式(utf-8、utf-16、UNICODE BI\LI)之间切换“ccs=UNICODE”标志。实验发现从 UNICODE 切换到 ASCII 并没有发生,但试图解决这个问题,我发现文本 Unicode 文件有一些前缀,如 0xFFFE、0xFEFF 或 0xFEBB。
那么,我可以制作这样的跨平台而不是那么难看的东西吗?
问题2
我可以在 Windows 中做这样的事情,但它会在 Linux 中工作吗?
如果没有,那么是否有某种 ANSI C 函数可以将 ASCII 字符串转换为 Unicode?我想在我的程序中使用 Unicode 字符串。
问题 3
此外,我需要将 Unicode 字符串输出到控制台。windows里有setlocale(*),但是linux下怎么办呢?那里的控制台似乎已经是 Unicode。
问题 4
一般来说,我想在我的程序中使用 Unicode,但我遇到了一些奇怪的问题:
PS是否有一些关于跨平台编程的好书,比较windows和linux程序代码的东西?还有一些关于使用Unicode的方法的书,实用的方法,就是这样。我不想沉浸在简单的 UNICODE BI\LI 历史中,我对特定的 C/C++ 库感兴趣。