При использовании этого подхода вы должны убедиться, что ни одно из ваших значений не содержит что-то, что было бы незаконным. XML-user1151923
blockquote>Я всегда использую метод XML. Убедитесь, что вы используете VALID XML. У меня есть две функции для преобразования между действительным XML и текстом. (Я, как правило, вырезаю каретки, как мне обычно не нужны.
CREATE FUNCTION dbo.udf_ConvertTextToXML (@Text varchar(MAX)) RETURNS varchar(MAX) AS BEGIN SET @Text = REPLACE(@Text,CHAR(10),'') SET @Text = REPLACE(@Text,CHAR(13),'') SET @Text = REPLACE(@Text,'<','<') SET @Text = REPLACE(@Text,'&','&') SET @Text = REPLACE(@Text,'>','>') SET @Text = REPLACE(@Text,'''',''') SET @Text = REPLACE(@Text,'"','"') RETURN @Text END CREATE FUNCTION dbo.udf_ConvertTextFromXML (@Text VARCHAR(MAX)) RETURNS VARCHAR(max) AS BEGIN SET @Text = REPLACE(@Text,'<','<') SET @Text = REPLACE(@Text,'&','&') SET @Text = REPLACE(@Text,'>','>') SET @Text = REPLACE(@Text,''','''') SET @Text = REPLACE(@Text,'"','"') RETURN @Text END
У вас уже есть typedef
в вашем заголовке, поэтому включите это и определите struct foo
в реализации без typedef
.
foo.h
:
typedef struct foo foo;
foo *create_foo(...);
delete_foo(foo *f);
foo.c
:
#include <foo.h>
struct foo { int implementation; };
/* etc. */