error C2440: ‘初期化中’: ‘void *’ から ‘char *’ に変換できません。
警告:C言語なのにC++コンパイラ使ってる?
■エラーが出たらC++
#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(void)
{
char s1[3] = "123";//エラーが出たらC++
char *s2 = malloc(sizeof("123")); //エラーが出たらK&R-CかC++
if(s2 == NULL){
perror(NULL);
exit(1);
}
strncpy(s2,s1,3);
free(s2);
if(sizeof('A') == sizeof(char))
puts("貴方はC++コンパイラを使っています");
else if(sizeof('A') == sizeof(int))
puts("貴方はCコンパイラを使っています");
}
Visual Studio使用者でC言語のつもりで
C++コンパイラを起動している場合が
けっこうあります。
ご利用のコンパイラで上記のプログラムが
コンパイルできれば
Cコンパイラをご利用です。
コンパイルエラーになれば
C++コンパイラを起動しています。
多くの場合
Visual Studioでプロジェクトを作る際に
main.c でなくて
main.cpp で登録してしまっているようです。
接尾子が.cppの場合自動的にC++のプログラムと判断され、
C++コンパイラが起動されます。