#include <stdio.h>
#include <stdlib.h>
#include <time.h>
static struct tm createDate(unsigned day, unsigned mon, int year) {
struct tm b = {0,0,0,day,mon-1,year-1900}; return b;
}
static int dateExceeded(unsigned day, unsigned mon, int year) {
struct tm b = createDate(day,mon,year);
time_t y = mktime(&b), now;
time(&now); // error C2143: syntax error : missing ';' before 'type'
double diff = difftime(y, now)/(60 * 60 * 24); // error C2065: 'diff' : undeclared identifier
return (diff < 0);
}
static void randomEvent(){
srand(time(NULL));
if (rand()%10) {
printf("Do something here\n"); // C2143: syntax error : missing ';' before 'type'
}
}
Répondre
Si vous compilez ceci comme code C89, vous devez déclarer les variables au début des blocs. Vous ne pouvez pas déclarer double diff
au milieu du bloc:
static int dateExceeded(unsigned day, unsigned mon, int year) {
double diff;
struct tm b = createDate(day,mon,year);
time_t y = mktime(&b), now;
time(&now);
diff = difftime(y, now)/(60 * 60 * 24);
return (diff < 0);
}
Hmm, je ne semble pas être en mesure de reproduire cela. En utilisant votre code exact:
1>------ Build started: Project: so_1251288, Configuration: Debug Win32 ------
1>Compiling...
1>so_1251288.cpp
1>c:\users\matthew iselin\documents\visual studio 2008\projects\so_1251288\so_1251288\so_1251288.cpp(21) : warning C4244: 'argument' : conversion from 'time_t' to 'unsigned int', possible loss of data
1>Linking...
1>Build log was saved at *snip*
1>so_1251288 - 0 error(s), 1 warning(s)
========== Build: 1 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========
J'ai supposé que vous utilisez Visual C++. Quelle version utilisez-vous? Quel est votre environnement configuré en tant que? La seule chose à laquelle je peux penser est que vous avez involontairement activé Unicode plutôt que le codage de caractères multi-octets ... Mais cela ne devrait pas causer les erreurs que vous voyez.
EDIT: Je ne peux même pas reproduire en créant une application Visual C++ CLR et en collant directement votre code. Nous avons besoin de plus d'informations pour pouvoir diagnostiquer le problème.
EDIT 2: En fait, je peux reproduire, quand je compile comme C (/ TC) plutôt que le code C++ (/ TP). Comme cela a déjà été mentionné, C89 exige que les variables soient définies au début des fonctions, ce qui entraîne l'échec de votre code.
Compilez-le en tant que code C (pas C++) et vous verrez. –
Oui, j'ai testé ça juste après avoir lu votre réponse :) –
Il y a aussi une erreur dans le code. Vous devriez appeler srand une seule fois dans la vie du programme. Si vous appelez srand à chaque fois avant rand(), il peut arriver que vous obteniez les mêmes valeurs encore et encore.
ISO C90 forbids mixed declarations and code
- 1. Code C++ simple (qu'est-ce qui ne va pas ici?)
- 2. Qu'est-ce qui ne va pas avec UserDefaultCredentials?
- 3. Qu'est-ce qui ne va pas avec window.open ici?
- 4. qu'est-ce qui ne va pas avec mon formatage xml?
- 5. Qu'est-ce qui ne va pas avec mon XML?
- 6. Qu'est-ce qui ne va pas avec ContentTemplate?
- 7. ce qui ne va pas avec ma version de _bittestandset
- 8. Qu'est-ce qui ne va pas avec ce correctif pour un double verrouillage?
- 9. K-means clustering: qu'est-ce qui ne va pas? (PHP)
- 10. Zend/Apache mod_rewrite ... qu'est-ce qui ne va pas?
- 11. Qu'est-ce qui ne va pas avec ça [lire l'entrée d'un fichier texte dans Matlab]?
- 12. Juste ne peut pas sembler chercher le mobile Gmail html, ce qui ne va pas?
- 13. Qu'est-ce qui ne va pas avec ma demande d'adhésion à ValidateUser? (using ClientFormsAuthenticationMembershipProvider)
- 14. Qu'est-ce qui ne va pas avec mes sous-éléments ListView Callback?
- 15. Qu'est-ce qui ne va pas avec mon simple script de proxy HTTP? (python socket based)
- 16. Qu'est-ce qui ne va pas avec mon installation Android sous Ubuntu 9.04
- 17. List.Add semble être en train de dupliquer les entrées. Qu'est-ce qui ne va pas?
- 18. Instructions IF imbriquées dans ASP ... Qu'est-ce qui ne va pas avec les codes?
- 19. La réaction sur la case ne fonctionne qu'une seule fois. Qu'est-ce qui ne va pas?
- 20. En ce qui concerne Scroll Voir
- 21. Comment trouver les fonctions qui ne sont pas exécutées?
- 22. Pourquoi cela ne compilera pas en F #
- 23. Y a-t-il quelque chose qui ne va pas avec mon Object Scope?
- 24. Qu'est-ce qui ne va pas avec mon appel SOAP à OnTime à partir de mon hook post-commit SVN?
- 25. sIFR 3 - sifr-config.js peut-être pas en cours d'exécution? Je ne suis pas sûr de ce qui ne va pas
- 26. Séries temporelles en R
- 27. Voir la valeur des fonctions
- 28. Utiliser grep pour rechercher les fichiers fournis par find: ce qui ne va pas avec find. | xargs grep '...'?
- 29. Puis-je voir ce qui est éliminé par l'option Visual C++/OPT: REF linker?
- 30. ne peut pas voir WSDL sur Delphi CGI avec IIS7
Visual C++, je comprends? –
est un type non signé? – Zed
@Matthew: Très probablement, d'autant plus qu'il se compile parfaitement sous GCC. – hbw