There is a main.c
file, whose content is:
#include "memory.h"
#include "stdint.h"
#define MOLECULE_API_DECORATOR
MOLECULE_API_DECORATOR const uint8_t MolDefault_ByteOpt[0] = {};
int main(int argc, char *argv[]) {
uint32_t size = sizeof(MolDefault_ByteOpt);
const uint8_t *expected = MolDefault_ByteOpt;
const uint8_t *actual = NULL;
if (memcmp(actual, expected, size) != 0){
return 1;
}
return 0;
}
Then I compile main.c with gcc 12.2.1 by gcc -Werror -Wall main.c
, will got:
main.c: In function ‘main’:
main.c:8:5: error: offset ‘0’ outside bounds of constant string [-Werror=array-bounds]
8 | int main(int argc, char *argv[]) {
| ^~~~
main.c:6:38: note: ‘MolDefault_ByteOpt’ declared here
6 | MOLECULE_API_DECORATOR const uint8_t MolDefault_ByteOpt[0] = {};
| ^~~~~~~~~~~~~~~~~~
main.c:10:31: error: offset ‘0’ outside bounds of constant string [-Werror=array-bounds]
10 | const uint8_t *expected = MolDefault_ByteOpt;
| ^~~~~~~~~~~~~~~~~~
main.c:6:38: note: ‘MolDefault_ByteOpt’ declared here
6 | MOLECULE_API_DECORATOR const uint8_t MolDefault_ByteOpt[0] = {};
| ^~~~~~~~~~~~~~~~~~
main.c:8:5: error: offset ‘0’ outside bounds of constant string [-Werror=array-bounds]
8 | int main(int argc, char *argv[]) {
| ^~~~
main.c:6:38: note: ‘MolDefault_ByteOpt’ declared here
6 | MOLECULE_API_DECORATOR const uint8_t MolDefault_ByteOpt[0] = {};
| ^~~~~~~~~~~~~~~~~~
cc1: all warnings being treated as errors
How can I change the code to avoid this error?
I expected to compare actual
and expected
and compile this code without any warnings or errors.