Функции со связью C, способные возвращать тип класса?

Я наблюдал функцию в dll, которая имеет связь C. Эта функция возвращает тип класса. Я не уверен, как это стало возможным, поскольку C не понимает class.
Я написал образец DLL и программу сам и заметил, что компилятор VC ++ показывает предупреждение об этом, но не останавливает вас. Программа может получить адрес GetProcAddress этой функции и вызвать ее для получения возвращенного объекта. Определение класса стало доступным для программирования.
Кроме того, если я напишу функцию со связью C, которая возвращает тип класса, в который этот класс даже не экспортируется, компилятор не выдает никаких предупреждений. Программа может использовать эту функцию из библиотеки dll при условии, что ей доступно определение класса.
Есть мысли о том, как это работает? Является ли такое поведение конкретным компилятором / платформой?

5
задан HS. 20 January 2011 в 07:53
поделиться