Questions tagged «c»

C是用于系统编程(OS和嵌入式),库,游戏和跨平台的通用编程语言。该标记应与ISO 9899标准(除非另有说明,最新版本9899:2018中定义的有关C语言的一般问题)一起使用-还要使用c89,c99,c11等标记特定于版本的请求。C与C ++截然不同,在没有合理理由的情况下,不应将其与C ++标记结合使用。

12
const char * const vs const char *?
我正在运行一些示例程序来重新熟悉C ++,并且遇到了以下问题。首先,下面是示例代码: void print_string(const char * the_string) { cout << the_string << endl; } int main () { print_string("What's up?"); } 在上面的代码中,print_string的参数可能改为const char * const the_string。哪个更正确? 我知道区别在于一个是指向常量字符的指针,而另一个是指向常量字符的指针。但是为什么这两个都起作用?什么时候有意义?
110 c++  c 

9
在Linux中创建守护程序
在Linux中,我想添加一个无法停止且监视文件系统更改的守护程序。如果检测到任何更改,则应在启动控制台的路径上加上换行符。 我已经准备好更改代码的文件系统了,但是我不知道如何创建守护程序。 我的代码是从这里: http //www.yolinux.com/TUTORIALS/ForkExecProcesses.html 叉后该怎么办? int main (int argc, char **argv) { pid_t pID = fork(); if (pID == 0) { // child // Code only executed by child process sIdentifier = "Child Process: "; } else if (pID < 0) { cerr << "Failed to fork" << endl; …
110 c  linux  daemon 


30
如何仅使用两个指针来反转单链列表?
我想知道是否存在仅使用两个指针来反转单链列表的逻辑。 以下是用于逆转使用三个指针即单链表p,q,r: struct node { int data; struct node *link; }; void reverse() { struct node *p = first, *q = NULL, *r; while (p != NULL) { r = q; q = p; p = p->link; q->link = r; } first = q; } 还有其他替代方法可以反向链接列表吗?就时间复杂度而言,颠倒单个链表的最佳逻辑是什么?


4
不管结果如何,最快的整数除法支持零除法?
摘要: 我正在寻找最快的计算方法 (int) x / (int) y 毫无例外的y==0。相反,我只想要一个任意结果。 背景: 在对图像处理算法进行编码时,我经常需要除以(累积的)alpha值。最简单的变体是带有整数算术的纯C代码。我的问题是,对于具有的结果像素,通常会得到零除误差alpha==0。但是,这恰好是像素,其结果根本不重要:我不在乎使用的像素的颜色值alpha==0。 细节: 我正在寻找类似的东西: result = (y==0)? 0 : x/y; 要么 result = x / MAX( y, 1 ); x和y是正整数。该代码在嵌套循环中执行了很多次,因此我正在寻找一种摆脱条件分支的方法。 当y不超过字节范围时,我对解决方案感到满意 unsigned char kill_zero_table[256] = { 1, 1, 2, 3, 4, 5, 6, 7, [...] 255 }; [...] result = x / …

9
C中单个结构成员的大小
我试图声明一个依赖于另一个结构的结构。我想使用sizeof它是安全/学究的。 typedef struct _parent { float calc ; char text[255] ; int used ; } parent_t ; 现在,我想声明一个结构child_t,其大小与相同parent_t.text。 我怎样才能做到这一点?(下面的伪代码。) typedef struct _child { char flag ; char text[sizeof(parent_t.text)] ; int used ; } child_t ; 我尝试了几种不同的方式与parent_t和struct _parent,但是我的编译器不接受。 作为技巧,这似乎可行: parent_t* dummy ; typedef struct _child { char flag ; char text[sizeof(dummy->text)] …
109 c  struct  sizeof 


10
C / C ++行号
为了调试目的,我可以在C / C ++编译器中获得行号吗?(某些编译器的标准方式或特定方式) 例如 if(!Logical) printf("Not logical value at line number %d \n",LineNumber); // How to get LineNumber without writing it by my hand?(dynamic compilation)

14
从函数返回C字符串
我正在尝试从函数返回C字符串,但是它不起作用。这是我的代码。 char myFunction() { return "My String"; } 在main我这样称呼它: int main() { printf("%s", myFunction()); } 我也尝试了其他方法myFunction,但是它们没有用。例如: char myFunction() { char array[] = "my string"; return array; } 注意:不允许使用指针! 关于这个问题的一点背景: 有功能可以找出是哪个月。例如,如果为1,则返回一月,依此类推。 因此,当要打印时,它是这样进行的:printf("Month: %s",calculateMonth(month));。现在的问题是如何从calculateMonth函数中返回该字符串。
109 c 

6
(A + B + C)≠(A + C + B)和编译器重新排序
将两个32位整数相加会导致整数溢出: uint64_t u64_z = u32_x + u32_y; 如果首先将32位整数之一转换为64位整数或将其添加到64位整数,则可以避免这种溢出。 uint64_t u64_z = u32_x + u64_a + u32_y; 但是,如果编译器决定重新排序添加项: uint64_t u64_z = u32_x + u32_y + u64_a; 整数溢出仍可能发生。 是否允许编译器进行这种重新排序,还是我们可以信任它们以注意到结果不一致并按原样保留表达式顺序?


11
GCC编译错误,代码> 2 GB
我有大量的功能,总计约2.8 GB的目标代码(不幸的是,科学计算无法实现...) 当我尝试链接它们时,我遇到了(预期的)relocation truncated to fit: R_X86_64_32S错误,希望通过指定编译器标志来规避-mcmodel=medium。除了链接之外,所有我可以控制的库都使用-fpic标志进行编译。 仍然,错误仍然存​​在,并且我假定链接到某些库不是使用PIC编译的。 这是错误: /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x12): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_fini' defined in .text section in /usr/lib64/libc_nonshared.a(elf-init.oS) /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function `_start': (.text+0x19): relocation truncated to fit: R_X86_64_32S against symbol `__libc_csu_init' defined in .text section in /usr/lib64/libc_nonshared.a(elf-init.oS) /usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../lib64/crt1.o: In function …
108 c++  c  gcc  compiler-errors 

1
C中的“ [0…255] =”语法是什么?
参照js0n.c 代码语法如下: static void *gostruct[] = { [0 ... 255] = &&l_bad, ['\t'] = &&l_loop, [' '] = &&l_loop, ['\r'] = &&l_loop, ['\n'] = &&l_loop, ['"'] = &&l_qup, [':'] = &&l_loop, [','] = &&l_loop, ['['] = &&l_up, [']'] = &&l_down, // tracking [] and {} individually would allow fuller validation …
108 c  gcc-extensions 


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.