在这个 C 编程案例中,C99 命令行不打印任何内容
今天我在使用 C 时遇到了一个奇怪的问题。快速浏览一下这个简化的代码片段: typedef struct { /* The number of index terms */ int nTerms; /* Info…
Linux 中条件运算符的奇怪使用
在 3.0.4 Linux 内核中,mm/filemap.c 有这样一行代码: retval = retval ?: desc.error; 我尝试使用 gcc -Wall 编译类似的最小测试用例,但没有收到…
在 POSIX 中将整数值转换为 void* 并再次转换回来总是安全的吗?
这个问题几乎与我发现的其他一些问题重复,但这特别涉及 POSIX,并且是我多次遇到的 pthreads 中一个非常常见的示例。我主要关心当前的情况(即 C99 …
C 中内联声明的困惑
我正在用 C 实现队列的实现。我的接口由五个简单的函数组成来访问队列: #ifndef QUEUE_H #define QUEUE_H #include #include struct queue { struct …
对 C/C++ 中的布尔值求和
考虑下面的 C++ 代码: bool a = 5; bool b = 6; int c = (int)a + (int)b; 当我编译并运行此代码时,c 的值为 2。标准是否保证在任何编译器/平台中,…
Linux 系统上通常实现的 POSIX c99 实用程序是什么?
我很好奇 POSIX c99 实用程序 通常在 GNU/Linux 发行版中实现什么。 我意识到这确实是一个应该由每个发行版的文档来回答的问题,但是我的 openSUSE 11…
当没有找到匹配的函数时,ac 编译器会做什么
考虑以下代码: #include int f() { printf(" hey "); return 5; } int main() { printf("hello there %d",f(4,5)); f(4,5); return 0; } 我期望函数…
反对使用 size_t 的理由是什么?
我有一个这样的 API, class IoType { ...... StatusType writeBytes(......, size_t& bytesWritten); StatusType writeObjects(......, size_t& objs…
在现代 POSIX 环境中,除了 usleep 之外,我还能使用什么?
我对 C 相当陌生,但正在编写一个小型多线程应用程序。我想给线程引入延迟。我一直在使用“usleep”,其行为正是我想要的 - 但它会在 C99 中生成警告…
在 C99 中组合指定的初始值设定项和 malloc?
有没有一种好的方法可以将 C99 中的指定初始值设定项与 malloc 的结果结合起来? 以下似乎有不必要的重复: typedef struct { int a, b, c; } Type; T…
C99,C 代码中的变量放置
我使用 Visual Studio 2008 编写 C 代码。我想将变量放置在代码“内部”。像这样 int main() { foo(); int i; foo(i) return 0; } 我可以这样做吗? …
隐式声明memcmp在c99中无效
我正在 Xcode 4 中创建一个非常基本的 C 控制台应用程序,并且在编译时遇到警告:memcmp 的隐式声明在 c99 中无效。 我对该函数的使用正如您所期望的…
在 NULL 表示为 0 的平台上,编译器是否曾经生成过 NULL <= p 的意外代码
在 C99 中,等式 == 似乎从来都不是未定义的。如果您将其应用于无效地址,它可能会意外生成 1(例如 &x + 1 == &y 可能意外为 true)。它不会产生未定…