下面这段是MSDN上的小例子,请问为什么这段程序输出func,
那个i是什么作用,
__FUNCTION__在哪里定义了吗,
printf_s与printf到底啥区别啊?本人入门者,见笑了。#include <stdio.h>void func(int i) {
printf_s("%s\n", __FUNCTION__);
}int main()
{
__int8 i8 = 100;
func(i8); // no void func(__int8 i8) function
// __int8 will be promoted to int
}
那个i是什么作用,
__FUNCTION__在哪里定义了吗,
printf_s与printf到底啥区别啊?本人入门者,见笑了。#include <stdio.h>void func(int i) {
printf_s("%s\n", __FUNCTION__);
}int main()
{
__int8 i8 = 100;
func(i8); // no void func(__int8 i8) function
// __int8 will be promoted to int
}
__FUNCTION__被编译器赋值为当前函数名
printf_s是printf的更安全的版本
i是函数的参数,在里面有没有用到一目了然啊,你把func定义为无参数的结果也是输出func..__FUNCTION__我前面说了呀,被编译器复制为当前函数名,如果疑惑可以修改函数名看看是不是输出对应的,VC还有其他类似的宏,比如__FILE__就是当前所在文件的路径,这都是由编译器赋值的,
至于printf_s,后面加s的是更安全的版本,你可以参看MSDN,说的很清楚了The main difference between printf_s and printf is that printf_s checks the format string for valid formatting characters, whereas printf only checks if the format string is a null pointer. If either check fails, an invalid parameter handler is invoked, as described in Parameter Validation.