可以做到的,参考一下backtrace_symbols的实现以及相关原理,这里面比较复杂,也比较底层,一两句话说不清楚
成都创新互联主营黄梅网站建设的网络公司,主营网站建设方案,成都app软件开发,黄梅h5微信小程序定制开发搭建,黄梅网站营销推广欢迎黄梅等地区企业咨询
你要是想通过_FUNCTION_这种方式来搞的话,可以通过如下方式:
#define m_fun(args) fun(__FILE__,__LINE__, args)
进行相应的替换即可
这几个函数的原型在stdio.h中定义
/* Return the value of envariable NAME, or NULL if it doesn't exist. */
extern char *getenv (__const char *__name) __THROW __nonnull ((1)) __wur;
/* The SVID says this is in stdio.h, but this seems a better place. */
/* Put STRING, which is of the form "NAME=VALUE", in the environment.
If there is no `=', remove NAME from the environment. */
extern int putenv (char *__string) __THROW __nonnull ((1));
/* Set NAME to VALUE in the environment.
If REPLACE is nonzero, overwrite an existing value. */
extern int setenv (__const char *__name, __const char *__value, int __replace)
__THROW __nonnull ((2));
/* Remove the variable NAME from the environment. */
extern int unsetenv (__const char *__name) __THROW __nonnull ((1));
void perror(const char *s);
perror ("open_port");
函数说明
perror()用 来 将 上 一 个 函 数 发 生 错 误 的 原 因 输 出 到 标 准 设备 (stderr) 。参数 s 所指的字符串会先打印出,后面再加上错误原因字符串。此错误原因依照全局变量errno 的值来决定要输出的字符串。 在库函数中有个errno变量,每个errno值对应着以字符串表示的错误类型。当你调用"某些"函数出错时,该函数已经重新设置了errno的值。perror函数只是将你输入的一些信息和现在的errno所对应的错误一起输出。
范例:
运行结果:
@ubuntu:~/work/dev/test ./perrortest
error code = 2, error msg = No such file or directory
noexitfile: No such file or directory
红帽linux中C语言编程调用数学函数参考案例如下所示:
当需要调用函数的个数比较少时,可以直接在main函数中包含该文件,比如一个文件夹下包含add.c和main.c文件。
文件add.c定义两个整数相加的函数,code如下:#include#includeintadd(inta,intb){intz;z=a+b;returnz;},主函数main.c的code如下:#include#include#include"add.c"intmain(){inti,j,k;i=1;j=2;k=add(i,j);printf("iaddj=%d",k);},编译生成可执行文件:gcc-omainmain.c,执行:./main。
Linux正在成为开发人员的编程天堂,成为开源和免费操作系统。 Turbo C编译器已经是一种编译程序的旧方法,所以让程序员转向Linux以获得新的编程环境。 在本文中,我们将解释如何编写,编译和运行一个简单的C程序。 这将成为您迁移到可以在Linux上编写和执行的更复杂和有用的C程序的基础。
我们在Ubuntu 18.04 LTS系统上运行了本文中提到的步骤和命令。
我们将使用Linux命令行工具Terminal,以编译一个简单的C程序。 要打开终端,您可以使用Ubuntu Dash或Ctrl + Alt + T快捷方式。
第1步:安装build-essential软件包
为了编译和执行C程序,您需要在系统上安装必要的软件包。 在Linux终端中以root用户身份输入以下命令:
sudo apt-get install build-essential
系统会要求您输入root用户密码; 安装过程将在此之后开始。 请确保您已连接到互联网。
第2步:编写一个简单的C程序
安装必要的软件包之后,让我们编写一个简单的C程序。
打开Ubuntu的图形文本编辑器,将以下示例程序写入或复制到其中:
#includestdio.h
int main()
{
printf("nA sample C program ");
return 0;
}
然后使用.c扩展名保存文件。 在这个例子中,我将我的C程序命名为linuxidc.c
或者,您可以通过gedit中的终端编写C程序,如下所示:
gedit linuxidc.c
这将创建一个.c文件,您可以在其中编写和保存程序。
第3步:使用gcc编译C程序
在终端中,输入以下命令以生成您编写的程序的可执行版本:
句法:
$ gcc [programName].c -o programName
示例:
$ gcc linuxidc.c -o linuxidc
你是指延迟函数还是定时调用,比如到11:12:13秒执行某个函数?
如果是延时函数用
usleep(usec); // 微妙
sleep(sec); // 秒
如果是定时执行的话,你只能开个线程或while,每隔1s判断下当前系统时间,
struct tm *ptm;
long ts;
int y,m,d,h,n,s;
ts = time(NULL);
ptm = localtime(ts);
y = ptm- tm_year+1900; //年
m = ptm- tm_mon+1; //月
d = ptm- tm_mday; //日
h = ptm- tm_hour; //时
n = ptm- tm_min; //分
s = ptm- tm_sec; //秒
照着上面的格式组成字符串进行判断,到点了就执行就可以了