c相关内容

如何在C-S函数之间共享C结构?

有没有办法在几个CS函数之间共享一个C结构(只实例化一次)?我的意思是:我有一个带有许多块的Simulink模型,这些块被实现为C-S函数。这些块中需要许多模型参数,我想创建一个包含所有模型参数的对象,并且在开始模拟时只实例化一次。现在,我为每个S-Function实例化该对象,以便访问参数,但在S-Function之间共享该对象会很好。 仅供猜测:我可以将模型参数结构放在单独的DLL中,然后从 ..
发布时间:2022-06-16 14:53:51 其他开发

Solaris上的Ppoll

这段代码可以在Linux中编译,但不能在Solaris中编译,因为pPoll()显然是特定于Linux的(我在Solaris中遇到了GCC未定义的符号错误)。需要帮忙把它改装一下吗?我不认为只使用poll()是个好主意,但话又说回来,这段代码不是我写的。(我从Writing a command line shell with C; trying to use ncurses/C for the f ..
发布时间:2022-06-15 18:13:01 其他开发

C中的Solaris时区(strftime上缺少%z)

我有一个写入另一个应用程序的应用程序,需要提供系统的日期+时区。我一直使用带%z参数的strftime来获取时区,它在Linux上运行得非常好。然而,上周我们决定将其合并到Solaris中,结果发现%z不存在。 有人建议使用%Z,它会给出时区名称,但我需要%z,它提供偏移量格式的时区,如+0100或-0300。 有人有主意吗? POSIX %z不是推荐答案。您必须通过查找本 ..
发布时间:2022-06-15 17:53:18 其他开发

Solaris中的ptrace

我正在尝试将一个使用ptrace的程序从Linux移植到Solaris,但没有成功,因为它报告找不到sys/ptrace.h。你知道怎么移植它吗? 推荐答案 至少在我有权访问的Solaris系统上,man ptrace说包括 #include #include 用于访问ptrace原型和常量。但是,有一条用法说明指出,ptra ..
发布时间:2022-06-15 17:06:07 其他开发

当同一套接字上的发送/接收正在进行时,是否可以从另一个线程关闭该套接字?

当同一套接字上的发送/接收正在进行时,是否可以从另一个线程关闭该套接字? 假设一个线程正在阻止recv调用,而另一个线程关闭了同一个套接字,recv调用中的线程会知道这一点并安全退出吗? 我想知道不同操作系统/平台的行为是否会有所不同。如果是,它在Solaris中会有什么表现? 推荐答案 我不知道Solaris网络堆栈的实现,但我会提出我的理论/解释为什么它应该是安全的。 ..
发布时间:2022-06-15 16:22:51 其他开发

如何标记C源文件中的位置,以供以后的断点定义使用?

问题: 我希望能够在C代码中放置不同的可能唯一或重复的标记,这样我就可以在GDB中使用它们来创建断点。 相似工作: 断点到行号:与源行上的断点的主要区别在于,如果以某种方式修改标记之前的代码,从而导致或多或少的行,则对标记的引用在语义上仍然是正确的,而对源行的引用则不会。 标签:我来自上一个问题How to tell gcc to keep my unused labels?,其 ..
发布时间:2022-06-14 12:18:19 其他开发

函数返回值优化?

我正在编写我自己的编程语言,由于各种原因,它被编译成C语言(其中一个原因是我对汇编几乎一无所知)。 我有一个关于编译器(比如GCC或Clang)如何优化从函数返回值的问题。假设我有这样的代码: int FUNC() { int A = 3; return A; } int main() { int B = FUNC(); } 我的理解是,您希望变量A在从F ..
发布时间:2022-06-12 09:38:45 其他开发

为什么我能用GCC做的最小编译可执行文件是67KB?

我想做一个非常小的编译可执行文件,它是用C编写的,但我能设法得到的最小可执行文件是67KB。我用的是MinGW。 我已尝试不使用任何头文件,编译时没有错误: //no header void main() { write(1, "Hello world!", 12); } 如果我构建并运行此程序,GCC没有显示错误,但它也是67KB。 推荐答案 我刚刚在x86_64Linu ..
发布时间:2022-06-11 23:31:13 其他开发

GCC 11.1中对易失性的非一致性优化

在写关于编译器必须如何处理volatile的答案时,我相信我可能无意中发现了GCC的错误,希望有人在我报告它之前进行验证。 我写了一个简单的函数,如下所示: int foo (int a, int b, int c) { b = a + 1; c = b + 1; a = c + 1; return a; } 如果没有优化,这会导致大量毫无意义的数据来回移动。通过优 ..
发布时间:2022-06-11 23:28:01 其他开发

交换给定整数中的两个位

我看到了一些解决方案,但它看起来很复杂。 在n,m位置的两个位之间交换的最有效方法是什么? int swapBits(int num, int nPostion, int mPosition); 推荐答案 给定整数n,我们要在其中交换位置p1和p2的位: 算法:如果两位相同,则返回相同的值,否则使用异或切换两位。 unsigned int swapBits(unsign ..
发布时间:2022-06-10 15:49:20 其他开发

在一个不支持负零的系统中产生负零有什么意义?

C17 6.2.6.2/4表示: 如果实现不支持负零,则&;、|、^、~、<;<;的行为, And>>运算符的操作数将生成这样的值,这是未定义的。 如果我有一个2的补码系统,它不支持负零。它总是利用二进制数的所有可能组合来表示值。因此,无论使用哪种位运算,都不可能生成负零。那么这篇文章的意思是什么呢? 我的看法是,这部分指的是具有1的补码或带符号幅度的系统,这些系统 ..

如何在处理输入文件时向前看(处理2行)

在逐行浏览文本文件时,我希望能够向前看下一行,并在处理当前行的同时检查它。我正在用C语言工作。我相信fseek()或其他类似的功能会对我有帮助,但我不确定,也不知道如何使用它们。我想取得的成就是: fp = fopen("test-seeking.txt", "r"); while((fgets(line, BUFMAX, fp))) { // Peek o ..
发布时间:2022-06-10 13:22:49 其他开发

C fopen写入失败,错误号为2

我不明白为什么这似乎失败,错误号为2: char debugText [256]; sprintf (debugText, "C:\List.txt"); dfile = fopen( debugText, "w"); fprintf ( dfile, " err %d ", errno); 我之所以说似乎是因为当dfile为空时,将创建文件并使用我的输出填充该文件。 那么这是 ..
发布时间:2022-06-10 13:05:23 其他开发