关于__cdecl和Unicode一些问题

最近在学习windows编程,有几个小问题不太明白,第一,在头文件里面有很多函数的定义比如cdecl会夹在函数定义的类型名和函数名之间,但是我记得C语言的函数定义里面没有这个参数,它对函数定义会产生什么影响。第二,我在看windows编程这本书的时候,书中说在使用Unicode的时候有宏定义,它会根据是否有Unicode标识符来编译是否使用宽字符版本的函数等,这个标识符怎么使用,是在自己写的程序体里面标注吗?第三,cdecl是不是和Unicode一样,是一个标识符。

cdecl 是c++函数调用约定,是VS的默认调用约定
unicode是预编译宏来区分ansi,unicode API等

cdecl是不是在编译器里面设置,在函数定义的时候是不是还可以通过标识符来修改调用方式。Unicode只能在宏定义中写吗?在程序本体里面是不是就不能使用了。