【初心者歓迎】C/C++室 Ver.77【環境依存OK】at TECH
【初心者歓迎】C/C++室 Ver.77【環境依存OK】 - 暇つぶし2ch55:デフォルトの名無しさん
11/12/15 09:43:31.74
前スレ>>782
>namespace manko {
> extern "C" {
>  #include <Windows.h>
を見て、へーこんなことできるんだと思って試してみた。

namespace Impl{
struct impl_struct{ char c[8]; };
extern "C" void externCtest(impl_struct *a){
for(int t = 0; t < 8; ++t) printf_s("%d ", a->c[t]);
printf_s("\n");
}
}
namespace Decl{
struct decl_struct{ int a, b; };
extern "C" int externCtest(decl_struct *a);
}
void externCtest(){
Decl::decl_struct a = { 1, 2 };
printf_s("externCtest ret = %d\n", Decl::externCtest(&a));
printf_s("&Decl::externCtest = %x\n", (int (*)(Decl::decl_struct*))Decl::externCtest);
printf_s("&Impl::externCtest = %x\n", (void (*)(Impl::impl_struct*))Impl::externCtest);
}

extern "C"をつければ、どのnamespaceで定義しても
どのnamespaceで宣言しても、引数や戻り値がでたらめでも
名前と引数のサイズとかが合ってれば動くみたいなんだけど
これってちゃんと仕様に沿ってるの?


次ページ
続きを表示
1を表示
最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch