what is the difference between __cudacc__ and __cuda_arch__?

Would you clarify what the difference between cudacc and cuda_arch is?
Thanks.

As far as I remember CUDACC contains information about whether we are in CUDA or non-CUDA code, while CUDA_ARCH informs about the compute capability version of CUDA.

Thanks cmaster.