Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 在main之前执行任何函数_C - Fatal编程技术网

C 在main之前执行任何函数

C 在main之前执行任何函数,c,C,我想在main()之前执行user define函数。 是否可以在c中的main()之前执行函数 sum(int a, int b) { return (a+b); } g_sum = sum(1, 5); main(){ sum(5, 6); printf("%d", g_sum); } 是否可以在main()之前执行函数 是的,如果您使用的是gcc和g++编译器,则可以使用\uuuuu属性\uuuuu((构造函数)) 示例: #include <stdio.h>

我想在main()之前执行user define函数。 是否可以在c中的
main()
之前执行函数

sum(int a, int b) {   return (a+b); }

g_sum = sum(1, 5);

main(){
  sum(5, 6);
  printf("%d", g_sum);
}
是否可以在main()之前执行函数

是的,如果您使用的是gcc和g++编译器,则可以使用
\uuuuu属性\uuuuu((构造函数))

示例:

#include <stdio.h>

void beforeMain (void) __attribute__((constructor));

void beforeMain (void)
{
  printf ("\nThis is before main\n");
}

int main ()
{
 printf ("\nThis is my main \n");
 return 0;
}
#包括
void beforeMain(void)_属性__((构造函数));
失效前失效(失效)
{
printf(“\n在main之前”);
}
int main()
{
printf(“\n这是我的主\n”);
返回0;
}

C++
中,这将非常好。你用什么编译器?使用
GCC
您可以使用
\uuuuu属性(构造函数))
您的代码不会编译。。。文件级不能有语句或表达式。谢谢Rahul。这真的很有效。@sutirtha:-不客气!只是好奇,在什么情况下我们需要这个功能?@SagarKotecha:-我现在不太确定确切的情况,但它就像C运行时一样,在执行二进制文件时为操作系统提供了一个执行入口点。该入口点运行特定于编译器实现的代码。初始化代码将被相应地设置,然后调用main()函数(如果提供了任何命令行参数)。在调用main()之前执行的C运行时之外的任何其他代码都是C语言(或编译器提供的C语言扩展)之外的机制。