以下は、第14問で取り上げたC言語のプログラムです。これを、C++のプログラムとして実行したいと考えました。でも、C++のコンパイラがエラーを出すので、動かすことができません。
どのように修正すれば、コンパイルエラーにならずにC++として実行できるようになるか、分かりますか?
main.cpp
#include <stdio.h>
#include <stdlib.h>
typedef struct {
double base;
double height;
} Triangle;
double TriangleArea(const Triangle *triangle) {
return triangle->base * triangle->height / 2.0;
}
int main(void) {
Triangle *triangle = malloc(sizeof(Triangle));
if (triangle) {
triangle->base = 6.0;
triangle->height = 4.0;
printf("area = %f\n", TriangleArea(triangle));
free(triangle);
triangle = 0;
}
return EXIT_SUCCESS;
}
期待される実行結果
area = 12.000000
あれれ?「C言語実力診断クイズ」っていうタイトルはウソですかー?
それは文句かしら?
ごめんなさい。ちょっとツッコミを入れてみたかっただけです。
まぁいいわ。C++を使ったことはあったかしら?
一応あるんですけど……。C言語のプログラムってC++でも動くんじゃないんですか?
そうでもないのよ。よく似た言語ではあるんだけどね。
えー。上位互換だって聞いてたんですけど……。
malloc()
のあたりに注目してみましょう。