こんにちは、次のテスト コードがあり、cpp について混乱しています。
library.h で空の要素句を含む配列を宣言すると、コンパイラは何を選択しますか? それも文句はありません。私はCygwinを使用しています。
library.cpp で 2 つの要素に値を割り当てます。コンパイラは 1 つの要素を持つ配列を想定し、配列の範囲外に 2 番目の要素を書き込みますか?
ライブラリ.h
#ifndef LIBRARY_H
#define LIBRARY_H
class library {
public:
void print();
char a[];
};
#endif
ライブラリ.cpp
#include <stdio.h>
#include "library.h"
void library::print() {
a[0] = 'a';
printf("1. element: %d\n", a[0]);
a[1] = 'b';
printf("2. element: %d\n", a[1]);
}
client.cpp
#include <stdio.h>
#include "library.h"
void execute();
library l;
int main() {
l = library();
l.print();
return 0;
}
メイクファイル
OPTIONS=-Wall
all: main
run: main
./main.exe
main: client.o library.o
g++ $(OPTIONS) -o main $^
library.o: library.cpp library.h
g++ $(OPTIONS) -c $<
.cpp.o:
g++ $(OPTIONS) -c $<
clean:
rm -r *.o