在编译之前确定数组长度 我尝试在Arduino和C++中建立一个简单的访问控制机制。用于访问的单个密码在编译时已知,如下所示 const unsigned int PASSWORD[] = {1, 2, 3, 4, 5};

在编译之前确定数组长度 我尝试在Arduino和C++中建立一个简单的访问控制机制。用于访问的单个密码在编译时已知,如下所示 const unsigned int PASSWORD[] = {1, 2, 3, 4, 5};,c++,arrays,compilation,arduino,preprocessor,C++,Arrays,Compilation,Arduino,Preprocessor,要将用户输入与密码进行比较,我需要几个其他数组(并非所有数组都具有相同的数据类型),它们的元素数与密码相同 目前,我能想到的实现这一点的唯一方法是使用第二个常量变量 const unsigned int PASSWORD_LENGTH = 5; 然而,让用户在设置中输入密码和相同的密码长度对我来说似乎是不必要的冗余 因此,我的问题是,如果有一种方法可以通知编译器密码的长度,并在代码中使用此长度作为变量,而不让用户自己计算元素?您可以使用std::size() 这将有助于:Simpleconst

要将用户输入与密码进行比较,我需要几个其他数组(并非所有数组都具有相同的数据类型),它们的元素数与密码相同

目前,我能想到的实现这一点的唯一方法是使用第二个常量变量

const unsigned int PASSWORD_LENGTH = 5;
然而,让用户在设置中输入密码和相同的密码长度对我来说似乎是不必要的冗余


因此,我的问题是,如果有一种方法可以通知编译器
密码的长度,并在代码中使用此长度作为变量,而不让用户自己计算元素?

您可以使用
std::size()


这将有助于:

Simple
const unsigned int PASSWORD\u LENGTH=sizeof(PASSWORD)/sizeof(int)
sizeof(PASSWORD)/sizeof(*PASSWORD)
更为通用。因为我们谈论的是arduino,你甚至可以用它制作一个宏。第二个数组
无符号长COMP_数组[sizeof(PASSWORD)/sizeof(int)]甚至编译?它们是编译时常量,所以是的。很可能您想要一个包含
const unsigned password\u length
的头,但OP的编译器可能不提供该头。