WARNING: While resolving call to function 'help' arguments were dropped!
optmization으로 컴파일 할 때이 경고 메시지가 나타나는 이유는 무엇입니까?
gcc -O3 codice -o out/codice
을 사용하여 컴파일하면이 성가신 경고 메시지가 표시됩니다. 컴파일이 끝났으므로 왜 이런 일이 일어나는지 궁금합니다.
저는 xcode 4.3이 설치된 사자상의 Mac입니다. 그것을 사용하는 컴파일러는 내가 전환하는 경우 - O2/-O1/-O에 -O3
다음은
코드는 다음과 같다 같은 경고를주고 계속 i686-apple-darwin11-llvm-gcc-4.2
주 ....
입니다#include <stdlib.h>
#include <stdio.h>
#include <unistd.h>
#include <fcntl.h>
#include <signal.h>
#include <string.h>
#include <math.h>
void help();
char *codice_encrypt(char *in);
char *codice_decrypt(char *in);
void sigint_handler(int signal) {
exit(2);
}
int main (int argc, char **argv) {
if (argc != 3) {
help();
}
signal(SIGINT, sigint_handler);
char *ret, *status;
int tmpret;
if (strcmp(argv[1], "e") == 0 || strcmp(argv[1], "encrypt") == 0) {
status = "Encrypting...\n";
tmpret = write(STDOUT_FILENO, status, strlen((const char *)status));
ret = codice_encrypt(argv[2]);
} else if (strcmp(argv[1], "d") == 0 || strcmp(argv[1], "decrypt") == 0) {
status = "Decrypting...\n";
tmpret = write(STDOUT_FILENO, status, strlen((const char *)status));
ret = codice_decrypt(argv[2]);
} else {
status = "Could not understand command line arguments O.o\n";
tmpret = write(STDOUT_FILENO, status, strlen((const char *)status));
help(STDOUT_FILENO);
}
status = "Success!\nRetval:\n\n";
tmpret = write(STDOUT_FILENO, status, strlen((const char *)status));
tmpret = write(STDOUT_FILENO, ret, strlen((const char *)ret));
tmpret = write(STDOUT_FILENO, "\n\n", 2);
return 0;
}
void help() {
int tmpret;
const char *logo = "\n\n\t\tooooooo__oo______________________\n"
"\t\t_____oo______oo_oo_oo__oo_oo_oo__\n"
"\t\t____oo___oo__ooo_oo__o_ooo_oo__o_\n"
"\t\t___o_____oo__oo__oo__o_oo__oo__o_\n"
"\t\t_oo______oo__oo__oo__o_oo__oo__o_\n"
"\t\tooooooo_oooo_oo______o_oo______o_\n"
"\t\t_________________________________\n\n\n";
tmpret = write(STDOUT_FILENO, logo, strlen(logo));
const char *help = "Help\n"
"Is\n"
"Still\n"
"Being\n"
"Written :)\n\n";
tmpret = write(STDOUT_FILENO, help, strlen(help));
exit(1);
}
char *codice_encrypt(char *in) {
unsigned int i;
char ya = 0x55;
write(STDOUT_FILENO, "0x", 2);
char itret[50];
sprintf(itret,"%#hhx",ya);
write(STDOUT_FILENO, itret, strlen(itret));
write(STDOUT_FILENO, "\n", 1);
ya = ya & 0x0F;
ya = ya >> 1;
sprintf(itret,"%#hhx",ya);
write(STDOUT_FILENO, itret, strlen(itret));
write(STDOUT_FILENO, "\n", 1);
ya = 0x55;
ya = ya & 0xF0;
ya = ya << 1;
sprintf(itret,"%#hhx",ya);
write(STDOUT_FILENO, itret, strlen(itret));
write(STDOUT_FILENO, "\n", 1);
return in;
}
char *codice_decrypt(char *in) {
return in;
}
감사!
'STDOUT_FILENO'을 (를) 정의에 인수가없는'help()'에 전달하고 있습니까? – noMAD
그 유형이었던 나는 그 것을 제거했다 – DanZimm