Tag: function

在C中查找函数调用者

嘿所有,我只是想知道是否有可能获得在函数内运行的程序的名称? 这是一个例子: 我打电话说: ./ runProgram main() { A(); } function A() { // Possible to retrieve “runProgram” if I cannot use main’s argc(argv) constants?? }

为什么C中的某些函数有下划线前缀?

我最近开始用C语言学习网络,我看到一些函数以下划线_function()开头 – 这究竟是什么意思? 我也看到了这个: struct sockaddr_in { __SOCKADDR_COMMON (sin_); in_port_t sin_port; struct in_addr sin_addr; unsigned char sin_zero[sizeof (struct sockaddr) – __SOCKADDR_COMMON_SIZE – sizeof (in_port_t) – sizeof (struct in_addr)]; }; 这部分代码意味着什么: __SOCKADDR_COMMON (sin_); unsigned char sin_zero[sizeof (struct sockaddr) – __SOCKADDR_COMMON_SIZE – sizeof (in_port_t) – sizeof (struct in_addr)];

main()是C中的预定义函数吗?

可能重复: C,C ++,Java,C#中的main() 我是编程的新手,特别是C。 我看过的每个例子都有一个“主”函数 – 这是以某种方式预定义的,这样名称对编译器或运行时具有特殊意义……或者它只是C程序员中常见的习惯用法(比如使用“foo”和“bar”表示任意变量名)。

atoi是一个标准function。 但是itoa不是。 为什么?

为什么这个区别? 我已经遇到了可怕的问题,假设itoa在stdlib.h ,最后将itoa的自定义版本与不同的原型相关联,从而产生一些疯狂的错误。 那么,为什么itoa不是标准function呢? 它出什么问题了? 为什么标准偏向其孪生兄弟atoi ?

在“C”头文件中声明的静态函数

对我来说,在源文件中定义和声明静态函数是一个规则,我的意思是.c文件。 然而,在极少数情况下,我看到人们在头文件中声明它。 由于静态函数具有内部链接,我们需要在包含声明函数的头文件的每个文件中定义它。 这看起来很奇怪,远非我们通常在将某些东西声明为静态时所需要的。 另一方面,如果有人天真地尝试使用该function而没有定义它,编译器将会投诉。 所以从某种意义上来说,即使听起来很奇怪也不是真的不安全。 我的问题是: 在头文件中声明静态函数有什么问题? 有什么风险? 编译时间有什么影响? 运行时有任何风险吗?

C是否具有函数参数名称的__func__function?

“C”标准是否支持类似于__func__的函数参数名称?

C链表清单function

我正在努力学习C,而且和很多人一样,我一直有点困难。 无论如何,我做了一个递归函数来销毁我的链表,但是当我调试时,当我从函数返回时,列表的头部不应该是空的,所以我猜它是一些基本的误解指针。 这是function: void destroy(struct node* n){ if(!n) return; destroy(n->next); free(n); n = NULL; } 提前致谢。

获取函数参数的地址是否合法?

这个代码片段是否在ANSI C中定义良好? 在我的系统(Linux x86_64)上,它似乎运行得很好并打印一个地址,但总是这样吗? 例如,参数可能通过寄存器传递,并且获取该地址似乎不正确。 #include void foo(int a) { printf(“%p\n”, &a); } int main(void) { foo(42); return 0; } 编辑:看起来GCC会在获取地址之前将寄存器传递的值放入堆栈。 : 55 push rbp 48 89 e5 mov rbp,rsp 48 83 ec 10 sub rsp,0x10 89 7d fc mov DWORD PTR [rbp-0x4],edi b8 1c 06 40 00 mov eax,0x40061c 48 8d 55 fc lea […]

创建一个接受不同数据类型参数的C函数

我对C编程语言比较陌生,我正在试图弄清楚如何创建一个可以接受不同类型数据作为参数的函数。 该函数应该计算并返回字符或整数数组中的元素数。 我已经有两个单独的函数可以做到这一点,但我真的希望能够为这两个任务使用一个函数。 有没有办法在C中这样做? 提前致谢!

测量C中函数的时间

我正在调试一个C应用程序,我想知道它在特定函数中花费了多少时间。 我可以更改源代码并添加更多代码来进行测量,但对我来说似乎并不合适。 我宁愿用外部应用程序来做,而不是每次都重新编译。 我发现可以在GDB中设置一个断点,所以我想,必须能够通过简单的程序使用类似工具跟踪时间: – 设置断点 – 停止时,测量实际时间并运行函数 – 离开函数时,再次测量时间然而,我还没有找到一种方法如何在gdb中做到这一点:( 有任何想法吗? 谢谢