问题标签 [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 - ANSI C #define VS 函数
我对我的代码的性能有疑问。假设我在 C 中有一个结构:
和一个我使用结构的函数。
我想知道用#define替换这个函数是否是一个聪明的主意,
我认为它会更快,因为不会有函数开销,我想知道是否应该对程序中的所有其他函数使用这种方法来提高性能。所以我的问题是:
我应该用#define 替换所有函数以提高代码的性能吗?
c - 字符串数组转换
我有以下代码:
它可以使用“gcc -Wall -ansi -pedantic”编译。但是使用另一个工具链(Rowley),它抱怨
在 char **t 所在的行上。这确实是非法代码还是可以?
感谢所有的答案。我现在知道我的问题出在哪里了。然而,它提出了一个新问题:
c - 字符串数组初始化
这是我的另一个问题的延续。
考虑以下代码:
它并没有令我惊讶地编译(显然我并不像我想象的那样了解 C 语法)并生成以下错误:
如果我将 char* 更改为 char[] 它编译得很好:
有人可以向我解释为什么吗?
c - 将 ANSI C 程序从 Windows 交叉编译到 Mac?
是否可以交叉编译只使用 ANSI C 函数的程序(基本上我只包括 stdio.h)而不需要购买 Mac 并安装 Xcode?
编辑
根据daniweb 上的这篇文章,任何 FreeBSD 编译器都可以,这是真的吗?即我不需要特殊的链接器,并且我假设目标代码是相同的,因为我的目标是英特尔处理器上的 Mac?
c - ANSI C:isprint() 为非 ASCII 字符返回 true?
我有一些 C 代码应该打印文件的全部内容。该程序以前可以很好地打印一个文件,但是当它打印一秒钟时,我一直看到一个绝对不应该存在的 Unicode 字符。
(包装在 a 中while(!feof(file))
)
应该只打印 ASCII 可打印字符,除非我弄错了。无论如何,它打印的第一件事是\357\277\275
,它不是 ASCII,并且不可打印。
该文件仅包含以下内容:foo+bar.foo+t-bar.foo+completely fake
它打印出这个:(�foo+bar.foo+t-bar.foo+completely fake
在奇怪的字符和其他字符之间有一个换行符)。
只需将其全部打印(a la putchar(c)
)将完全相同的字符放在行尾。
我什至尝试过使用另一个文件(通过重命名旧文件并使用指向另一个文件的软链接),但我得到了完全相同的结果。
如果文件为空,它也会执行此操作。
该文件是完全纯文本,用 vim 创建的,没有什么特别之处。
这是原始代码:
c - 我应该使用“-ansi”还是明确的“-std=...”作为编译器标志?
我读过ANSI C 与 ISO C 并不完全相同,编译器对“-ansi”的解释可能有所不同。(gcc 将其映射到 C90,clang 将其映射到 C89) 目前我倾向于使用“-std=...”而不是“-ansi”,因为它会明确显示使用的标准。由于我对在 Linux、Windows 和 MAC 上编译特别感兴趣,我担心有些编译器无法理解“-std=...”而是“-ansi”。那么使用其中一个有什么优点和缺点吗?
c++ - const 修饰符 在 ANSI C 和 ANSI C++ 中
这是真的 ?
1.如果我们单独使用 const 修饰符,它默认为 int。例如,
方法
2.ANSI C 不需要 const 的初始化器;如果没有给出,它会将 const 初始化为 0。例如,
方法
请给出答案。根据 ANSI 标准
c - 我应该使用 ANSI C (C89) 吗?
现在是 2012 年。我正在用 C 编写一些代码。我还应该使用 C89 吗?是否还有不支持 C99 的编译器?
我不介意使用/* */
而不是//
.
我不确定C89 forbids mixing declarations and code
。我倾向于认为将所有声明放在一个地方实际上更具可读性,如果不是,则函数太长。
VLA 看起来很有用,但我还不需要它们。
如果没有令人信服的理由,我应该坚持使用 C89 吗?还有其他我没有考虑过的事情吗?
windows - ANSI C for Windows 中的简单删除文件程序
正在寻找一个简单的程序来删除用 ANSI C 编写的文件。
例如,您将如何使用 C 删除“C:\test.txt”中的文件?
c - C99 在运行时如何计算可变长度数组的大小?
在 C89 中,数组的长度在编译时是已知的。但是在 C99 中,对于可变长度数组,数组的长度在运行之前可能是未知的。
那么它是如何计算的呢?
为什么不能以同样的方式计算动态分配数组的长度?