gcc如何设法在ANSI-C中编译printf?
我看到的每个printf原型都使用了varargs,但ANSI-C不支持这种原型,例如:
IBuffer dataBuffer = Encoding.UTF8.GetBytes(plainText).AsBuffer();
IBuffer KeyPairBuffer = Convert.FromBase64String(keyPairString).AsBuffer();
AsymmetricKeyAlgorithmProvider asymmetricKeyAlgorithm = AsymmetricKeyAlgorithmProvider.OpenAlgorithm(AsymmetricAlgorithmNames.RsaSignPkcs1Sha1);
CryptographicKey cryptographicKey = asymmetricKeyAlgorithm.ImportKeyPair(KeyPairBuffer);
HashAlgorithmProvider hashAlgorithm = HashAlgorithmProvider.OpenAlgorithm(HashAlgorithmNames.Sha1);
IBuffer hashedBuffer = hashAlgorithm.HashData(dataBuffer);
System.Diagnostics.Debug.WriteLine(Convert.ToBase64String(hashedBuffer.ToArray()));
var buffer = CryptographicEngine.SignHashedData(cryptographicKey, hashedBuffer);
return Convert.ToBase64String((buffer.ToArray()));'
有没有诀窍,如果可以,我们可以将它用于ANSI-C中的代码吗?
答案 0 :(得分:3)
你的假设都是错误的。
首先,没有任何名为" ANSI-C" 1990年以后。美国人可能会将C标准称为INCITS / ISO / IEC 9899:2011,但美国以外没有人关心。我们称之为ISO C。
过去40年左右,C语言(不幸)总是支持可变功能。为了对函数定义进行编码,您需要包含stdarg.h
。
您将此与使用1999年(C99)引入的可变参数宏混淆。