![]() |
![]() |
0304 | ![]() |
||||
![]() | |||||||
| Explicitly undefined | REFERENCE - ISO:C90-6.5.1 Storage-Class Specifiers - Semantics | ||||||
An attempt has been made to use the address of an array declared with the register storage-class specifier. Any object declared with register should be considered as having no physical address (although a particular implementation could treat a register declaration as being an auto declaration). If an array has no computable address then it is illegal to try to take the address either implicitly (through the conversion of an array name to a pointer) or explicitly with the unary & operator. For example:
/*PRQA S 2017,2211,2711,3122,3132,3198,3199,3200,3203,3209,3408,3602,3625 ++*/
#include <string.h>
extern void foo(void)
{
char auc[4];
register char ruc[4];
char *puc;
puc = &auc[0];
puc = &ruc[0]; /* Message 0304 */
strcpy(auc, "ABC");
strcpy(ruc, "ABC"); /* Message 0304 */
}
See also:
![]() | ||
| QA·C Source Code Analyser 8.1.2
© 2013 Programming Research. www.programmingresearch.com | Personality Groups | Glossary | Message Index | Contents |