c有关的问题


如何将MSB复制到字节的其余部分?

在中断子程序 (每 5 µ s调用) 中,我需要检查一个字节的MSB,并将其复制到字节的其余部分。
我需要做一些像:
If (MSB = = 1){byte = 0b11111111}
Else {byte =


Union C中的结构偏移问题

我在Keil的C中有一个问题,下面是
这是示例C代码。
结构A
{
Uint8_t头;
Uint16_t卷;
Uint16_t temp;
Uint8_t页脚;
};
Union {
Struct A Packet;


调用另一个对象文件中的函数,而不使用共享库中的PLT?

我有两个汇编代码,code1.s和code2.s,我想从这两个构建一个可重定位 (使用-fPIC开关) 共享库。
我想要code2.s调用一个名为myfun1 的函数,该函数定义在


负整数数>> 31 = -1 不是 1?

所以,假设我有一个有符号整数 (几个例子):
-1101363339 = 10111110 01011010 10000111 01110101 二进制.
-2147463094 = 10000000 00000000 01010000 01001010 二进制.
-20552 =


如果使用编译错误 -- 带有gcc的静态标志

当我尝试编译静态时,我得到以下错误:
Gcc defrag.c -o abc.exe -- 静态
/Usr/bin/ld: 找不到-lc
Collect2: 错误: ld返回 1 退出状态
然而,同样的事情


评价的顺序点和顺序

我正在阅读K & R,在评估 [I] = i这样的表达时,我发现了这个关于行为不确定性的例子;
6.5.2 美元的C99 规格表示
在上一个和下一个之间


Malloc和scanf字符串

下面一个简单的程序与malloc和scanf与 % s得到一个字符串如下,给我一个输出我无法理解。虽然我只有 5 个字节,但我的输入字符串已经超过了上面的.


检查宏参数是否为指针

是否有一些 “好” 的方法来检查传递给宏的变量是否是指针?E.g.
# 定义IS_PTR(x) 的东西
Int a;
# 如果IS_PTR(a)
Printf (“我们有指针 \ n”);
# Else
Printf (“不是指针我们.


Gcc原子内置函数

http://gcc.gnu.org/onlinedocs/gcc-4.4.2/gcc/Atomic-Builtins.html
我相信下面的代码原子地增加var的值。
Volatile int var = 0;
_ _ Sync_fetch_and_add (& var,1 ).


如何链接到不同的libc文件?

由于版本差异,我想提供共享库和我的程序,而不是使用目标系统。
Ldd说我的程序使用这些共享libs:
Linux-gate.so.1 => (


Subq $40% rsp崩溃与AS,但GCC不是

我遇到一个奇怪的现象,我把代码记录在下面。
我的测试床是x86_64 和gcc是 5.3.0
当我在堆栈中为本地值保留一些空间时,有时它会崩溃。
……


(Void *) -1 的意义

我在看sbrk系统调用的文档,发现这个:
成功时,sbrk() 返回之前的程序中断。(如果中断增加,则该值是指向st的指针.


在ANSI C中,复合语句 (块) 是否由parens表达式包围?

浏览linux内核源代码我发现一些代码,其中一个由括号包围的语句块被视为表达式a la lisp (或ML),即,值i的表达式.


如何在C中使用rand() 或/dev/random创建大小为 64k w/o的随机char字符串?

我正在寻找创建 64k大小的有点随机字符串的方法。
但是我也希望这个速度快。我已经尝试了以下方法:
A) 从/dev/随机读取 -- 这太慢了
B) 呼叫r.


C中的指针及其作为数组的解释

我试图在邻接列表表示中保存一个图,因此,我为此目的使用指针。编写整个代码片段并不富有成效,因此我正在编写代码sni.


为什么我得到的答案是 “奇怪” 而不是 “偶数”

为什么我得到的答案是 “奇怪” 而不是 “偶数”?
# Include <stdio.h>
# 定义奇数 (x) x % 2?0:1
Int main()
{
Int a = 5;
If (ODD(a + 1))
Printf (“偶数”);
其他
Printf ("odd.


C编程 # 定义?

可能重复:
有人能解释这些未定义的行为吗 (i = i i,i = i等…)
# Include <stdio.h>
# Include <conio.h>
# Define SQ(x) x * x
空主 ()
{
我.


GCC内联汇编来操纵所有寄存器?

我正在尝试在C (GCC 4.6.3,x86 (64 位CPU),Ubuntu 12.04 64 位) 中进行一些程序集调用,以零出寄存器值并设置堆栈指针,并最终调用跳转指令。
这是.


C - division不起作用

我实际上完全卡住了,我不明白这个函数的行为:
# Include <stdio.h>
Typedef struct s_resolution
{
Int x;
Int y;
Float fx;
Float fy;
} T_resolution;


大于运算符的按位运算等效

我正在研究一个函数,基本上可以看到两个int中的哪一个更大。传递的参数是 2 个 32 位整数。诀窍是唯一允许的操作员是!~ | & <.


如何告诉gcc不对齐堆栈上的函数参数?

我正在尝试将 68000 处理器的可执行文件反编译到C代码中,用C函数逐个替换原来的子程序。
我面临的问题是,我不知道如何使gcc.


“切换” 比 “如果” 快吗?

Switch语句实际上比if语句快吗?
我用/Ox标志在Visual Studio 2010 的x64 C编译器上运行下面的代码:
# Include <stdlib.h>
# Include <stdio.h>
# 包括……


堆栈上的运行时内存分配

我想知道关于堆栈区域上的运行时内存分配以及它与堆区域上的运行时内存分配有何不同。
我知道如何通过使用库函数来分配内存。
# 包括.


Printf和co如何区分float和double

由于它不是强类型,我认为它只是选择了正确的内存大小,并根据参数的类型来解释它。但是float和double都使用 % f,它们的大小不同。
P.S.
我.


哪个C数据类型可以表示 40 位二进制数?

我需要表示一个 40 位二进制数。应该使用哪个C数据类型来处理这个?


打印浮点变量

下面是我的代码和程序输出:
# Include <stdio.h>
Int main()
{
浮动工资;
Printf (“请输入工资:”);
Scanf (“% f”,& 工资);
Printf ("你的工资是: % f \ n",工资);
}


用 64 或 32 位编译时的不同行为或sqrt

我正在使用数学库中的sqrt() 函数,当我使用-m64 构建 64 位时,我得到了正确的结果,但是当我构建 32 位时,我有非常不一致的行为。
例如,关于 64 位
做.


Linux内核: 可能 () vs不太可能 ()

这两种方法似乎在linux内核代码中被广泛使用。我知道分支预测的基础,但我想知道这两个函数如何影响if() 的操作


有没有可能通过mmap的匿名记忆 “打孔”?

考虑一个程序,它使用大量的大致页面大小的内存区域 (例如 64 kb左右),其中每个都是相当短暂的。(在我的特殊情况下,这些是绿色的备用堆栈


具有变量输入的函数指针

在C中,我试图将单变量函数传递到优化例程 (optimization_routine) 中。优化例程将指向单个浮点函数的指针func1ptr作为输入


在x86 上的 32 位块上实现类似学校的划分

假设我得到了两个大数字 (定义如下),和
我想通过后退来实现对他们的划分
到x86 可用算术
0008768376 - 1653656387 - 0437673667 - 0123767614 - 1039873878-


C警告在函数调用中缺少哨兵

这是我的警告。
函数调用中缺少哨兵
我怎样才能移除它。
我正在使用linux和gcc编译器。


在C中,我应该定义 (不声明/原型) 一个不带参数的函数,void或空列表?

这个问题可能有也可能没有副本,尽管我试图找到一个,但每个人的答案似乎都只是指声明/原型。他们指定一个定义voi.


强制转换/赋值中的结构类型不兼容?

这是这个问题的后续。
我试图避免使用显式typedef通过这样的强制转换将一个数组复制到另一个数组:
# Include <stdio.h>
Int main(void)
{
Int i;
Int.


Gcc collect2: 致命错误: 找不到 'ld'

我正在学习在 http://wiki.osdev.org/Bare_Bones 上制作操作系统的教程。当我尝试使用这个命令链接boot.o和kernel.o时: i686-elf-gcc -T linker.ld -o myos.bin -ffreestanding -.


嵌套在union中的结构中的公共初始序列-C标准中的定义

在C11 标准中,由单个联合中嵌套的结构共享的公共初始序列有以下定义:
6.5.2.3/6

一个特殊的保证是为了简化了……


索引与指针

我正在使用元素数组,其中许多相互引用,我假设在这种情况下使用指针更有效。
但在某些情况下,我需要知道一个元素的索引,我有


如何比较C程序中的字符串

我有一个关于如何在if语句中比较字符串的问题。我正在从Python移动到C,比较字符串在Python中很容易,但是在C中我该怎么做呢?
我的程序是:
Printf ("进入.


在printf % s和for循环 % c之间更快

我想知道在以下两者之间处理哪个更好/更快:
Printf ("% s",foo);

For (int i = 0; i < len; i + +)
Printf ('% c',foo[i]);'
我注意到输出并不总是.


在用fgets() 填充后,如何从字符串数组中删除newline “\ n”?

我正在使用的阵列是:
Char arr[91][12];
所以我填充我的数组从一个文件使用for循环像这样:
For (i = 0; fgets(arr[i],12,inFile); i ){}
当我想打印任何东西时.


Int (* func)() 在C中做什么?

这条线在C中做什么?
Int (* func)();
我从以下程序中提取它应该执行字节代码 (汇编指令转换为相应的字节)
Char co.


C中的序列点和副作用

在这个C-FAQ中给出了关于序列点;
标准规定;
在上一个和下一个序列点之间,对象的存储值最多应被evalu修改一次.


如何在c编程中用 “字符串” 替换此类型 “int”?

我正在使用dev c。这是一个愚蠢的程序,要求正确的键来显示文本。这个程序与类型 “int” (只是数字) 完美地工作:
# Include <stdio.h>
# 包括 <coni.


_ _ 属性 _ _ ((_ _ 对齐 _ _)) 不使用静态变量

这已经让我发疯好几天了。我不能得到一个数组对齐到 16,如果我声明为静态。
任何帮助都非常感谢。
修订版:
# Include <stdio.h>
# Include <assert.


C编译器是否有义务始终从内存重新加载const值?

我有一个const变量在我的嵌入式C程序。它在程序代码中用 0 定义和初始化。它通过链接器脚本放置在一个特殊的ROM区域。可以改变特殊的内容.


有效地将无符号值除以 2 的幂,舍入

我想实现unsigneda整数除法由二的任意幂,四舍五入,有效。所以我想要的,数学上,是天花板 (p/q)0。在C中,strawman实现,其中doe.


为什么有些文件指针在 64 位操作系统上有 28 位地址?

我是编程新手,有一个不重要但令人困惑的问题困扰着我。
让我先发布我的代码:
文件 * fp;
Int i;
Fp = fopen("test_data.txt","r");
Printf ("i的地址 = %.


以毫秒为单位获取日期和时间

我想创建一个函数,它将用当前日期和时间填充一个结构,例如:
Typedef struct DateAndTime
{
Int年;
Int月;
Int日;
Int小时;
Int minu.


在C # 中释放一个结构内的char数组。

我有一个包含字符串 (char数组) 数组和数组的最大容量的int的结构。
Typedef struct ArrayList
{
Char * * 数组;
Int容量;
}
数组是


如何在编译/链接时使用地址进行计算?

我写了一些初始化IDT的代码,它将 32 位地址存储在两个不相邻的 16 位半部。IDT可以存储在任何地方,你通过运行LIDT指令告诉CPU在哪里.


上一页 下一页