0
나는 clang에 GCC 중첩 함수를 포팅하려고합니다. gcc 중첩 함수는 clang에서 지원되지 않으므로 대신 c-block을 사용해야합니다.Clang C 블록 : 호출 후 블록 함수 정의
하지만 블록 정의를 호출 한 후 원한다.
foo(){
auto void bar (void);
...
bar()
...
void bar(void) {
...some stuff
}
}
당신은 내가 C 블록 연타 기능이 작업을 수행 할 수 있습니다
그래서 GCC에서 나는이 의사 코드가 (코드 MACRO에서 생성되고 난이 순서를 정렬 할 수 없기 때문에 나는이 순서가 필요합니다) ?
이 코드는
int main() {
void (^hello)(void);
hello = ^(void){
printf("Hello, block!\n");
};
hello();
return 0;
}
잘 작동하지만 다음 코드
int main() {
void (^hello)(void);
hello();
hello = ^(void){
printf("Hello, block!\n");
};
return 0;
}
는 segfault의 실패했습니다.
[C의 휴대용 중첩 기능] (http://stackoverflow.com/questions/12214867/portable-nested-functions-in-c) 또는 [Clang에 중첩 기능이있는 GCC 정리 매크로 다시 작성] (http://stackoverflow.com/questions/24959440/rewrite-gcc-cleanup-macro-with-nested-function-for-clang) – Stargateur