Ошибка компиляции с объявлением указателя функции
Я пытаюсь импортировать openssl в мой быстрый проект, но когда я добавляю #import "ras.h"
в xxx-Bridging-Header.h
, я получил ошибку компиляции ниже.
<unknown>:0: error: /Users/wenyun/workspace/newsvn/newios/ios/VanJoyPay2/VanJoyPay2/opensource/OpenSSLRSAWrapper/openssl/include/openssl/rsa.h:100: expected ')'
<unknown>:0: note: /Users/wenyun/workspace/newsvn/newios/ios/VanJoyPay2/VanJoyPay2/opensource/OpenSSLRSAWrapper/o penssl/include/openssl/rsa.h:100: to match this '('
ras.h: 100:
int (*rsa_mod_exp)(BIGNUM *r0,const BIGNUM *I,RSA *rsa,BN_CTX *ctx); /* Can be null */
Я исправил ошибку, переименовав const BIGNUM *I
в const BIGNUM *I
. Кто-нибудь знает, почему персонаж I
настолько особенный?
Я сделал еще один тест сегодня, результат выглядит так странно.
Я создал новый быстрый проект, написал 3 файла заголовка:
test.h
int test(char *I);
test2.h
#import "test3.h"
#import <Foundation/Foundation.h>
test3.h
int test3();
xxx-Bridging-Header.h
#import "test2.h"
#import "test.h"
Я снова получил ошибку компиляции!
Наконец, удаление "#import" делает все нормально.
Why the character "I" could not work together with #import <xxx>?
Ответы
Ответ 1
Проблема не связана с Swift. Это вызвано предыдущим определением I
в файле /usr/include/complex.h
(как Брайан Чен догадался).
Вот оскорбительные строки, сообщенные компилятором:
/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator8.1.sdk/usr/include/complex.h:42:11: note: expanded from macro 'I'
#define I _Complex_I