【发布时间】:2012-11-30 14:30:21
【问题描述】:
在第一次调用 strcpy_s 时,编译器可以推断出数组长度,但在第二次调用中,必须传入数组长度。
TCHAR szTemp[512];
::strcpy_s(szTemp, "a long text message");
TCHAR* pszTemp = new TCHAR[512];
::strcpy_s(pszTemp, 512, "a long text message");
delete []pszTemp;
编译器如何做到这一点?这是一个微软只有扩展吗?另外,如何声明我的方法以利用参数推导?
【问题讨论】:
-
@BoPersson:这个问题不是那个问题的重复,因为这个问题询问在某些情况下如何推断大小,而另一个问题没有。
-
@Eric - 这完全是关于数组和指针之间的区别。同样的问题。
-
@BoPersson:不,数组和指针之间的区别并不是“全部”。它询问关于推导大小的问题,并且在另一个问题中没有询问该问题,并且除了在排名第四的答案中没有讨论它,它没有解释它的示例。
-
编译器不会推断数组的大小,它知道因为你告诉了它。该问题的更好措辞是类似于 函数如何知道数组的大小?
标签: c++ c visual-c++